01
系列回顾
玩转Pandas系列已经连续推送5篇,尽量贴近Pandas的本质原理,结合工作实践,按照使用Pandas的逻辑步骤,系统地并结合实例推送Pandas的主要常用功能,已经推送的5篇文章:
玩转Pandas,让数据处理更easy系列1
玩转Pandas,让数据处理更easy系列2
玩转Pandas,让数据处理更easy系列3
玩转Pandas,让数据处理更easy系列4
玩转Pandas,让数据处理更easy系列5
实践告诉我们Pandas的主要类DataFrame是一个二维的结合数组和字典的结构,因此对行、列而言,通过标签这个字典的key,获取对应的行、列,而不同于Python, Numpy中只能通过位置找到对应行、列,因此Pandas是更强大的具备可插可删可按照键索引的工具库。
02
Pandas能做什么
Pandas主要能做10件事,现在已经推送了其中大部分,尽管有些点没有深入展开:
目前还没谈到的,并且还经常用到的就是9和10了,接下来分别探讨这两个事。
03
Groupby:分-治-合
group by具体来说就是分为3步骤,分-治-合,具体来说:
分和合按照字面理解就可,但是“治”又是怎么理解,进一步将治分为3件事:
下面详细说下,分,治,这两步操作。合地话就是映射为具体的某个数据结构。
04
分(splitting)
分组就是根据默认的索引映射为不同索引取值的分组名称,来看如下所示的DataFrame实例df_data,可以按照多种方式对它分组,直接调用groupby接口,
df_data.groupby('A')
默认是按照axis=0分组的(行),如果按照列,修改轴,即
df_data.groupby('A' , axis=1)
也可以按照多个列分组,比如:
df_data.groupby([ 'A', 'B'] )
05
选择分组
分组后返回的对象类型为:DataFrameGroupBy,我们看下按照列标签'A'分组后,因为'A'的可能取值为:foo, bar ,所以分为了两组,通过DataFrameGroupBy的get_group可以取得对应的组内行,如下图所示,
agroup = df.groupby('A') agroup.get_group('foo')
同样的方法,看下bar组包括的行:
agroup = df.groupby('A') agroup.get_group('bar')
如果我们想看下每组的第一行,可以调用 first(),可以看到是每个分组的第一个,last()显示每组的最后一个:
agroup.first()
06
治:分组上的操作
对分组上的操作,最直接的是使用aggregate操作,如下,求出每个分组上对应列的总和,大家可以根据上面的分组情况,对应验证:
agroup = df.groupby('A') agroup.aggregate(np.sum)
如果根据两个字段的组合进行分组,如下所示,为对应分组的总和,
abgroup = df.groupby(['A','B']) abgroup.aggregate(np.sum)
查询对应每个分组的个数,返回的是Series实例:
abgroup.size()
如果需要查看,分组foo, one 的个数,如下,得到个数 2.
abgroup.size()['foo']['one']
获得每个分组的统计信息,调用describe接口,如下所示:
abgroup.describe()
一次应用多个函数:
agroup = df.groupby('A') agroup.agg([np.sum, np.mean, np.std])
还可以对不同的列调用不同的函数,详细过程在参考官方文档:
http://pandas.pydata.org/pandas-docs/stable/groupby.html
还可以进行一些转化和过滤操作,这部分也请参考以上目录。
如想下载以上代码,请后台回复: pandas
小编对所推文章分类整理,欢迎后台回复数字,查找感兴趣的文章: 1. 排序算法
2. 图算法(含树)
3. 动态规划
4. LeetCode
5. Python
6. 数据处理三剑客 7. 数学知识
8. 数据预处理
9. 机器学习算法实例大全 10. 深度学习
11. Tensorflow
12. 自然语言处理 13. 上海沙龙
更多文章:
深度学习|大师之作,必是精品
算法channel关键词和文章索引
逻辑回归| 原理解析及代码实现
逻辑回归| 算法兑现为python代码
决策树
对决策树剪枝
本文分享自 程序员郭震zhenguo 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!