Pandas是数据分析的重要工具,因此从外部读取数据的能力是十分重要的,常用的API如图
文件类型 | 文件说明 | 读取函数 | 写入函数 |
---|---|---|---|
CSV | 是以纯文本形式存储的,以逗号分隔的表格数据 | read_csv | to_csv |
HDF | 是一种高效存储和分发科学数据的层级数据格式 | read_hdf | to_hdf |
SQL | 是一种用格式化查询语言编写的数据库查询脚本文件 | read_sql | to_sql |
JSON | 一种轻量级文本数据交换格式文件 | read_json | to_json |
html | 一种由超文本标记语言编写的网页文件 | read_html | read_html |
PICKLE | Python内部支持的一种序列化文件 | read_pickle | to_pickle |
Pandas可以读取到表格类型数据,转换成DF类型的数据,然后通过DF进行数据分析,数据预处理等操作
对于Pandas来说他的核心在于数据分析,而不是进行读写
需要注意的是,读取文件的方法配置了大量的参数,更多内容还需要阅读Pandas的官方文档
这里一般就是用于显示DF对象中的数据
属性 | 说明 |
---|---|
dtypes | 返回各个列的数据类型 |
columns | 返回各个列的名称 |
axes | 返回行标签和列标签 |
ndim | 返回维度 |
size | 返回元素个数 |
shape | 返回一个元组,表示几行几列 |
values | 返回以个存储DF数值的NumPy的数组 |
方法 | 说明 |
---|---|
head([n])/tail([n]) | 前n行或者后n行数据,方括号表示可选参数 |
describe() | 返回所有列的统计信息 |
max()/min() | 返回所有列的最大值和最小值 |
mean()/median() | 返回均值和中位数 |
std() | 返回标准差 |
sample([n]) | 从DF对象中随机抽取n个样本 |
dropna() | 删除所有缺失值的数据 |
count() | 对符合条件的记录计数 |
value_counts() | 查看某列有多少不同值 |
groupby() | 按照给定条件分组 |
和Series一样,我们可以通过布尔索引来提取DF的子集,过滤我们不需要的数据
他的切片操作和NumPy二维数组的几乎一模一样,而且由于DF具有行标签和列标签,使他的切片操作更加方便了
在DF中,我们可以根据某列或某几列对DF中的数据进行排序,默认升序
在sort_values方法中参数ascending为升序的意思,默认值为True
对数据分组并进行运算统计,是数据分析的重要环节
聚合是将多个数值按照某种规则聚合在一起,变成单个数据的转换过程
聚合的流程如下,先根据一个或多个键,拆分我们的Series或者DataFrame,然后根据每个数据块进行统计意义上的各种操作,例如平均值中位数等操作,还可以包含用户自定义的函数
我们可以通过agg方法来实施聚合操作,实际上其中的各个参数,才是其中的精华,通过设置参数,可以将函数作用在一个列或者多个列上
参数的函数名称是有官方提供的,以字符串形式出现,多个参数放在一个列表中即可
例如
df.列名.agg(['min','max','mean','median'])
我们就可以通过这种方式获取这一列的最小最大值,平均数与中位数了
需要注意的是,如果是自定义函数,就要直接给出函数名,而不应该传入字符串,同时也不需要括号
groupby()是Pandas的一个高效的分组方法,可以通过各种名称,指标等内容对数据进行分组,再对其进行数据统计与分析
实际上如果我们单纯分组是没有什么意义的,分组的精髓就在于再次使用之前的统计方法,例如mean()、count()等
需要注意的是,我们如果想要获取分组之后的列数据,再将其合并,如果用双方括号,返回值就是DF对象,如果是单括号,返回值就是一个Series对象
例如
df.groupby(分组依据)[[列名]].mean()
df.groupby(分组依据)[列名].mean()
第一行就是返回值是一个DF对象,第二行则是Series对象
与之对应的,我们可以在分组之后再进行聚合运算,这样便能很方便的统计出对应数据的大量信息了
例如
df.groupby(分组依据)[列名].agg(['mean','std','skew'])
一般来说分组和聚合结合起来使用可以达到很好的效果
DataFrame还有许多其他的工具和特性,例如透视表,类SQL操作等如果想要系统学习还是需要各位通过官方文档,现用现查的方式
对于我们从巨大量级的互联网获取的数据,有很多都包含了不统一,不准确,有缺失的情况,因此我们在进行数据分析之前一定要进行数据清理
函数 | 说明 |
---|---|
isnull() | 存在缺失值返回True |
notnull() | 不存在缺失值返回True |
filna(0) | 给缺失值赋值,默认值为0 |
dropna() | 存在缺失值,无条件删除 |
dropna(how=‘nall’) | 一行或一列全是缺失值则删除 |
dropna(axis=1,how=‘all’) | 当列方向全是缺失值则删除列 |
dropna(axis=1,how=‘any’) | 列只要存在一个缺失值,删除列 |
dropna(thresh=5) | 行的有效值低于5个时,删除行 |
下一篇就是Python基础的最后一篇了,我们的Python部分在此也告一段落,之后会逐步更新Python与数据库,大数据计算等内容的,感谢各位的支持,如果你发现文章中有任何不严谨或者需要补充的部分,欢迎在评论区指出