Pandas之groupby 用法筆記

2022-02-01 01:27:35 字數 3019 閱讀 6497

dataframe.groupby(by=none, axis=0, level=none, as_index=true, sort=true, group_keys=true, squeeze=false, **kwargs)

講真的,非常不能理解pandas官方文件的這種表達形式,讓人真的有點摸不著頭腦,example給得又少,引數也不給得很清楚,不過沒有辦法,還是只能選擇原諒他。

基本用法我這裡就不呈現了,我覺得用過一次的人基本不會忘記,這裡我主要寫一下我用過的關係groupby函式的疑惑:

這個問題著實困擾了我很久,經過研究,找了一些可能幫助理解的東西。先舉乙個例子:

import

pandas as pd

df = pd.dataframe()

ab

cq01

13li1

1-14zhang21

05zhang32

16li4

227wang

a  b  c   q

0113 li

3216 li

a b c q

0113 li

3216 li

a b c q

4227 wang

a b c q

11 -1

4 zhang

2105 zhang

df.groupby('q').agg(lambda x:print(x))
013

2 name: a, dtype: int6442

name: a, dtype: int6411

21name: a, dtype: int6401

31name: b, dtype: int6442

name: b, dtype: int64

1 -120

name: b, dtype: int6403

36name: c, dtype: int6447

name: c, dtype: int6414

25name: c, dtype: int64

ab

cqlinone

none

none

wang

none

none

none

zhang

none

none

none

不過我覺得這一點區別在實際應用中分別並不大,因為ipython的out輸出對於這兩個函式幾乎沒有差別,不管是處理一列還是一表。

我覺得agg()有一點讓我很開心就是他可以同時傳入多個函式,簡直不要太方便哈哈:

df.groupby('q').agg(['mean','std','count','max'])
ab

cmean

stdcount

maxmean

stdcount

maxmean

stdcount

maxq

li1.5

0.70710722

1.00.00000021

4.52.12132026

wang

2.0nan12

2.0nan12

7.0nan17

zhang

1.00.00000021

-0.5

0.70710720

4.50.70710725

這個也是我剛剛學會的,groupby的plot簡直不要太方便了:(不過這個例子選的不是很好)

這個是困擾我最多的乙個問題,因為如果我groupby的時候選擇了兩個level,之後的data總是呈現透視表的形式,如:

muldf = df.groupby(['q','a']).agg('mean')

print(muldf)

b    c

q a

li 1

1.03.0

21.0

6.0 wang 2

2.07.0

zhang 1 -0.5

4.5

我開始甚至以為這應該不是dataframe,是乙個我可能沒注意過的乙個東西,可是後來我發現,這不過是multiindex形式的一種dataframe罷了。

muldf.b
q      a

li 1

1.02

1.0 wang 2

2.0 zhang 1 -0.5

name: b, dtype: float64

如果要選擇某乙個index,用`xs()`函式:
muldf.xs('li')
bc

a11.03.0

21.0

6.0ps:有個問題困擾好久了,怎麼把multiindex物件變回原來的形式呢。如:

q      a    

li 1

1.0li 2

1.0wang 2

2.0zhang 1 -0.5

求大佬解答,感激不盡~

pandas聚合函式groupby

1.groupby聚合函式彙總 min 最小值 max 最大值 sum 求和 mean 平均數 std 標準差 size 按照groupby的值計算該值的個數 與count函式的區別在於,size函式會計算nan值,而count函式不會計算nan值 count 計算個數 nunique 去掉重複值後...

pandas分組運算(groupby)

按a列分組 groupby 獲取其他列的均值 方法1 b df b groupby df a mean 按a列分組,獲取b列的均值 print b 方法2 b df.ix 1 groupby df.ix 0 mean 按a列分組 0對應a列,1對應b列 獲取b列的均值 print b 方法3 2.聚...

pandas資料處理之groupby的常用用法

groupby by none,axis 0,level none,as index true,sort true,group keys true,squeeze false,kwargs 用於確定groupby的組。如果by是乙個函式,那麼會呼叫物件索引的每個值。如果傳遞了乙個dict或serie...