pandas中groupby函数的参数,pandas中groupby函数的参数,Pandas之groupby( )用法笔记小结

pandas中groupby函数的参数,pandas中groupby函数的参数,Pandas之groupby( )用法笔记小结

本文主要介绍了熊猫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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: