Python中Pandas详解之文件操作

文章目录

      • Pandas的文件读取与分析
        • 利用Pandas读取文件
        • DataFrame的常用属性
        • DataFrame的常用方法
        • DataFrame的条件过滤
        • DataFrame的切片操作
        • DataFrame的排序操作
      • Pandas的聚合与分组运算
        • 聚合
        • 分组
      • DataFrame中数据清洗方法

Pandas的文件读取与分析

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读取文件

Pandas可以读取到表格类型数据,转换成DF类型的数据,然后通过DF进行数据分析,数据预处理等操作

对于Pandas来说他的核心在于数据分析,而不是进行读写

需要注意的是,读取文件的方法配置了大量的参数,更多内容还需要阅读Pandas的官方文档

DataFrame的常用属性

这里一般就是用于显示DF对象中的数据

属性 说明
dtypes 返回各个列的数据类型
columns 返回各个列的名称
axes 返回行标签和列标签
ndim 返回维度
size 返回元素个数
shape 返回一个元组,表示几行几列
values 返回以个存储DF数值的NumPy的数组
DataFrame的常用方法
方法 说明
head([n])/tail([n]) 前n行或者后n行数据,方括号表示可选参数
describe() 返回所有列的统计信息
max()/min() 返回所有列的最大值和最小值
mean()/median() 返回均值和中位数
std() 返回标准差
sample([n]) 从DF对象中随机抽取n个样本
dropna() 删除所有缺失值的数据
count() 对符合条件的记录计数
value_counts() 查看某列有多少不同值
groupby() 按照给定条件分组
DataFrame的条件过滤

和Series一样,我们可以通过布尔索引来提取DF的子集,过滤我们不需要的数据

DataFrame的切片操作

他的切片操作和NumPy二维数组的几乎一模一样,而且由于DF具有行标签和列标签,使他的切片操作更加方便了

DataFrame的排序操作

在DF中,我们可以根据某列或某几列对DF中的数据进行排序,默认升序

在sort_values方法中参数ascending为升序的意思,默认值为True

Pandas的聚合与分组运算

对数据分组并进行运算统计,是数据分析的重要环节

聚合

聚合是将多个数值按照某种规则聚合在一起,变成单个数据的转换过程

聚合的流程如下,先根据一个或多个键,拆分我们的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操作等如果想要系统学习还是需要各位通过官方文档,现用现查的方式

DataFrame中数据清洗方法

对于我们从巨大量级的互联网获取的数据,有很多都包含了不统一,不准确,有缺失的情况,因此我们在进行数据分析之前一定要进行数据清理

函数 说明
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与数据库,大数据计算等内容的,感谢各位的支持,如果你发现文章中有任何不严谨或者需要补充的部分,欢迎在评论区指出

你可能感兴趣的:(Python,python,pandas,开发语言)