Pandas之資料分組

2021-09-27 09:59:41 字數 2571 閱讀 9295

df.groupby(

by=none

, axis=0,

# , default 0

level=

none

,# int, level name, or sequence of such, default none

as_index=

true

,# bool, default true

sort=

true

, group_keys=

true

,# bool, default true

squeeze=

false

,# bool, default false

observed=

false

,# bool, default false

**kwargs,

)

作用:

按列取值

按組迭代,groupby物件支援直接按組進行迭代;

呼叫方法,groupby物件可以呼叫物件,比如describe()

aggregate()可以支援更複雜的操作,比如字串、函式或者函式列表,並且能一次性計算所有累計值。

df = pd.dataframe(

, columns=

['key'

,'data1'

,'data2'])

print

(df)

key data1 data2

0 a 0

81 b 1

32 c 2

63 a 3

44 b 4

85 c 5

5#######################

print

(df.groupby(

'key'

).aggregate(

[min

,max

,np.median]))

data1 data2

minmax median min

max median

key

a 0

31.548

6.0b 1

42.538

5.5c 2

53.556

5.5# 也可以使用python字典指定不同列需要累計的函式

print

(df.groupby(

'key'

).aggregate())

data1 data2

key

a 0

8b 1

8c 2

6

過濾操作可以讓你按照分組的屬性丟棄若干資料。

print

(df.groupby(

'key').

filter

(lambda x: x[

'data2'

].std(

)<3)

) key data1 data2

0 a 0

82 c 2

63 a 3

45 c 5

5

累計操作返回的是對組內全量資料縮減過的結果,而轉換操作返回乙個新的全量資料。資料經過轉換後,其形狀與原來的輸入資料是一樣的。常見的例子就是將每一組的樣本資料減去各組的均值,實現資料標準化。

print

(df.groupby(

'key'

).transform(

lambda x : x - x.mean())

) data1 data20-

1.52.01-

1.5-

2.52

-1.5

0.53

1.5-

2.04

1.52.5

51.5

-0.5

def

norm_by_data2

(x):

x['data1'

]/= x[

'data2'].

sum(

)return x

print

(df.groupby(

'key').

(norm_by_data2)

) key data1 data2

0 a 0.000000

81 b 0.090909

32 c 0.181818

63 a 0.250000

44 b 0.363636

85 c 0.454545

5

python之pandas分組統計

pandas分組統計佔比 資料例如 美贊臣標籤 2017 11 15 mob 女性 110548715660 美贊臣標籤 2017 11 15 mob 男性 104342715471 美贊臣標籤 2017 11 15 pc 女性 398273 887 美贊臣標籤 2017 11 15 pc 男性 4...

pandas分組計算平均值 Pandas之分組計算

技術總編 張學人 好訊息!爬蟲俱樂部將於2019年5月2日至4日在武漢舉行stata程式設計技術五一訓練營,此次採用理論與案例相結合的方式,旨在幫助大家熟悉stata資料分析技巧,能夠通過程式設計讀取不同型別的資料來源 實現複雜資料合併 清洗的程式化,並且熟悉stata核心的爬蟲技術。我們以auto...

pandas資料分組運算 groupby

1 按列分組 import pandas as pd import numpy as np df dataframe dfdata1 data2 key1 key2 0 1.488061 0.002241 aone 10.707773 0.338733 atwo 2 1.689161 0.64764...