本文主要介绍了熊猫groupby()的使用说明摘要,并通过示例代码进行了详细介绍。对大家的学习或工作都有一定的参考价值。有需要的朋友不妨跟下面的边肖学习一下。
groupby官方解释
DataFrame.groupby(by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True,squeeze=False,**kwargs)
使用映射器(dict或key函数,将给定函数应用于组,将结果作为系列返回)或通过一系列列对系列进行分组。
说实话,我看不懂熊猫官方文件的这种表述,真让人摸不着头脑。例子给的很少,参数也不清楚,但是没有办法,只能原谅他。
groupby我用过的用法
这里就不呈现基本用法了。我觉得用过一次的人基本不会忘记。在这里,我主要写下我使用的关系groupby函数的疑点:
apply agg
这个问题真的困扰我很久了。经过研究,我发现了一些可能有助于我理解它的东西。让我给你举个例子:
进口熊猫作为pd
df=pd。DataFrame({'Q':['李','张','张','李',' A' : [1,1,1,2,2],' B' : [1,-1,0,1,2],' C' : [3,4,5,6,7]})
A
B
C
Q
0
一个
一个
三
里
一个
一个
-1
四
张(姓氏)
2
一个
0
五
张(姓氏)
三
2
一个
六
里
四
2
2
七
王(姓氏)
df.groupby('Q ')。应用(x:打印(x))
工商管理咨询公司
0 1 1 3里
3 2 1 6里
工商管理咨询公司
0 1 1 3里
3 2 1 6里
工商管理咨询公司
4 2 2 7王
工商管理咨询公司
1 1 -1 4张
2 1 0 5张
df.groupby('Q ')。agg(x:print(x))
0 1
3 2
名称:A,型号:int64
4 2
名称:A,型号:int64
1 1
2 1
名称:A,型号:int64
0 1
3 1
名称:B,型号:int64
4 2
名称:B,型号:int64
1 -1
2 0
名称:B,型号:int64
0 3
3 6
名称:C,型号:int64
4 7
名称:C,型号:int64
1 4
2 5
名称:C,型号:int64
A
B
C
Q
里
没有人
没有人
没有人
王(姓氏)
没有人
没有人
没有人
张(姓氏)
没有人
没有人
没有人
从这个例子中我们可以看到,apply()处理的对象是DataFrame等类的数据表,而agg()一次只传入一列。
不过我觉得这个区别在实际应用中并不大,因为Ipython的Out输出和两个函数几乎没有区别,不管是处理一个列还是一个表。
我觉得agg()让我开心的一点是它可以同时传入多个函数。简直不太方便哈哈:
df.groupby('Q ')。agg(['均值','标准差','计数','最大'])
A
B
C
意思是
标准
数数
最大
意思是
标准
数数
最大
意思是
标准
数数
最大
Q
里
1.5
0.707107
2
2
1.0
0.000000
2
一个
4.5
2.121320
2
六
王(姓氏)
2.0
圆盘烤饼
一个
2
2.0
圆盘烤饼
一个
2
7.0
圆盘烤饼
一个
七
张(姓氏)
1.0
0.000000
2
一个
-0.5
0.707107
2
0
4.5
0.707107
2
五
Plotting
这个我也是刚学的。groupby的绘图不太方便:(但是,这个例子选得不好)
%matplotlib内联
df.groupby('Q ')。agg(['均值','标准差','计数','最大'])。plot(kind='bar ')
matplotlib.axes._subplots。0x1133bd710处的轴子图
MultiIndex
这是最困扰我的问题,因为如果我在groupby时选择了两级,那么之后的数据总是以透视表的形式出现,比如:
Muldf=df.groupby(['Q ',' A'])。agg(“平均”)
打印(Muldf)
公元前
问答
李1 1.0 3.0
2 1.0 6.0
王2 2.0 7.0
张1 -0.5 4.5
起初,我甚至认为这不是一个数据框架,而是我可能没有注意到的东西。但是后来我发现这只是一个MultiIndex形式的dataframe。
马尔德夫。B
问答
李1 1.0
2 1.0
王2 2.0
张1 -0.5
名称:B,型号:float64
如果您想要选择某个索引,请使用` xs()`函数:
Muldf.xs('李')
B
C
A
一个
1.0
3.0
2
1.0
6.0
PS:有个问题困扰我很久了。如何将multiindex对象改回其原始形式?比如:
多格式如下:(a,b,c,),
指数
圆柱
(a1、b1、c1)
d1
(a2、b2、c2)
d2
直接调用函数reset_index(),并将(a,b,c,)变成列,并且索引被重置为(0,1,2,),如下:
指数
圆柱
0
第一等的
b1
c1
d1
一个
主动脉第二声
b2
c2
d2
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。