python数据分析的一些基础性知识(一)

1、pandas中的数据读写

文本文件是由若干行字符构成的计算机文件,csv是一种用分隔符分隔的文件格式,相对简单,比较通用,是以纯文本形式存储表格数据(数字和文本),应用于程序之间转移表格数据。

(1)文本文件

pandas中提供了两种函数来读取文本文件,分别是read_csv()和read_table()
常用参数:
filepath(文件路径)
sep(分隔符,csv默认为",",table默认为"Tab")
文本文件存储和读取类似,对于结构化数据,可以通过函数to_csv()实现
常用参数:
path_or_buf(代表文件路径,无默认)
sep(代表分隔符,默认为",")

(2)Excel文件

对Excel文件的读取通过函数read_excel(‘文件路径’)来实现
对Excel文件的存储通过函数to_exel(‘存储路径’)来实现

(3)数据库数据

读取函数:
read_sql_table()——只能读取数据库的某一个表格,没有查询功能
read_sql_query()——只能实现查询功能,不能直接读取数据库中的某个表
read_sql()————上两者结合,既能实现读取功能,又能实现查询功能
存储函数:
to_sql(‘数据库表名’)

2、DataFrame的常用操作

(1)基本属性

DataFrame的基础属性有values(元素)、index(索引、行名)、columns(列名)、dtypes(类型),除了这四个基础属性外,还有size、ndim可以获取DataFrame的元素个数和维度数。

(2)看改增删

访问DataFrame中的数据有两种办法,第一种是使用字典访问内部数据的方式访问DataFrame单列数据,即使用函数detail[‘id’],id指所要访问的那一列,第二种是使用访问属性的方式访问DataFrame单列数据,为detail.id,id指所要访问的那一列。但使用第二种方法会引起程序混乱,也会使得代码晦涩难懂,因此不建议使用第二种方法。下面一个表格是使用detail[‘id’]访问DataFrame不同数据的不同表现形式。此外还有head()函数、tail()函数是专门用来DataFrame前n行或后n行数据的。

要求 代码(index_name:行名) 举例
获取单列多行数据 detail['id_name][:n] 获取id列前五行的数据——detail[‘id’][:5]
获取多列多行数据 detail[‘id_name1’, ‘id_name2’][m:n] 获取id1列和id2列,第1~8行的数据—————————detail[‘id1’, ‘id2’][1:8]
获取多行数据(所有列) detail[:][m:n] 获取第1~8行的数据——detail[:][1:8]
获取前n行数据 detail.head(n)(n默认5) 获取前6行的数据——detail.head(6)
获取后n行数据 detail.tail(n)(n默认5) 获取后6行的数据——detail.tail(6)

**更改函数:**detail.loc[detail[‘order_id’] == ‘change’,‘order_id’]=‘bianhua’
loc()函数在下面会有描述,change代表需要更改的信息,bianhua代表的是更改之后的信息。需要注意,更改之后不能撤销。
增加函数:detail[‘新加列名’]=‘要增加的数据’,新加列的数据还可以用原有的数据进行计算。例如
detail[‘payment’] = detail[‘counts’] * detail[‘amounts’]
删除函数:drop(‘要删除的列或行索引’),

删除某列 detail.drop(labels=‘pay’,axis=1,inplace=True)
删除m~n行 detail.drop(labels=range(m:n),axis=0,inplace=True)

(3)loc()和iloc()函数

loc()和iloc()函数可以更加灵活地实现数据访问
DataFrame.loc[行索引名称或条件, 列索引名称]
DataFrame.iloc[行索引位置, 列索引位置]
二者的区别在于[ ]内添加的元素不一样。

要求 loc() 释义 iloc() 释义
单列切片 detail.loc(:, ‘id’) 提取id列的数据 detail.iloc(:, 6) 提取第6列的数据
多列切片 detail.loc(:, [‘id1’, ‘id2’]) 提取id1列和id2的数据 detail.iloc(:, [1, 6]) 提取第1~6列的数据
花式切片 detail.loc(6, [‘id1’, ‘id2’]) 提取第6行 id1列和id2的数据 detail.iloc(6, [2,4]) 提取行位置为6,列位置为2和4的数据
detail.loc(2:6, [‘id1’, ‘id2’]) 提取第2~6行 id1列和id2的数据 detail.iloc(2:6, [2,4]) 提取行位置为2~6,列位置为2和4的数据
条件切片 detail.loc(detail[‘id1’]==‘123’, [‘id1’, ‘id2’]) 提取id1为123的id1、id2数据 detail.iloc(detail[‘id1’==‘123’, [1,5]]) 提取id1为123的第1、5列数据

以上detail都是作者所设置的DataFrame数据,类似于test的意思。

(4)缺失值和重复值处理

缺失值处理:
寻找:info()或isnull()
info()函数直接可以看到哪一列有多少缺失值,但并不能看到缺失值的具体位置。
isnull()函数把原数据转换成一个只有True和False的数据表,True代表不缺失,False代表此处缺失值,可以比较直观地看到整个数据表中缺失值的位置。运用isnull().sum()函数,就能得到类似于info()函数得到的统计表,但更加简单明了。
丢弃:dropna()
填充:fillna()或interpolate()
fillna({‘需要处理的列’:‘赋的新值’})
还有一种新办法,运用loc()函数,即loc[detail[‘修改的列’].isnull(), ‘赋的新值’]
链接: 缺失值处理.他这个讲的比较详细,我就直接贴链接了。
重复值处理:
寻找:duplicated()函数,效果类似于上述info()函数。
处理重复行:当两行数据完全重复时,使用drop_duplicates()函数,无需设置任何参数,即可删除后面重复的行,即若第6行与第8行重复,运行drop_duplicates()函数,第8行就会被删掉。
处理重复值:默认保留第一个重复值所在的行,删除其他重复值所在的行。可以利用drop_duplicates()函数的参数keep来自定义删除重复值时保留哪个重复值所在的行。
例如:将参数keep设置为’first’,表示保留第一个重复值所在的行,如果要保留最后一个重复值所在的行,则将参数keep设置为’last’。还可以将参数keep设置为False,表示把重复值一个不留地全部删除。

2、numpy描述分析DataFrame数据

(1)数值型特征的描述性统计

数值型特征的描述性统计主要包括了计算数值型数据的完整情况、最小值、均值、中位数、最大值等。

函数名称 说明 函数名称 说明
np.min 最小值 np.max 最大值
np.mean 均值 np.ptp 极差
np.median 中位数 np.std 标准差
np.var 方差 np.cov 协方差

你可能感兴趣的:(数据分析,python)