Pandas (7)資料分組

2021-10-07 07:47:55 字數 3959 閱讀 7706

分組統計 - groupby功能

dataframe在行(axis=0)或列(axis=1)上進行分組,將乙個函式應用到各個分組並產生乙個新值,然後函式執行結果被合併到最終的結果物件中。

df.groupby(by=

none

, axis=

0, level=

none

, as_index=

true

, sort=

true

, group_keys=

true

, squeeze=

false

,**kwargs)

df = pd.dataframe(

)print

(df)

print

('------'

)print

(df.groupby(

'a')

,type

(df.groupby(

'a')))

print

('------'

)# 直接分組得到乙個groupby物件,是乙個中間資料,需要進行計算後才能使用

a = df.groupby(

'a')

.mean(

)b = df.groupby(

['a'

,'b'])

.mean(

)c = df.groupby(

['a'])

['d'

].mean(

)# 以a分組,算d的平均值

print

(a,type

(a),

'\n'

,a.columns)

print

(b,type

(b),

'\n'

,b.columns)

print

(c,type

(c))

# 通過分組後的計算,得到乙個新的dataframe

# 預設axis = 0,以行來分組

# 可單個或多個()列分組

# 分組 - 可迭代物件

df = pd.dataframe(

)print

(df)

print

(df.groupby(

'x')

,type

(df.groupby(

'x')))

print

('-----'

)print

(list

(df.groupby(

'x')),

'→ 可迭代物件,直接生成list\n'

)print

(list

(df.groupby(

'x'))[

0],'→ 以元祖形式顯示\n'

)for n,g in df.groupby(

'x')

:print

(n)print

(g)print

('###'

)print

('-----'

)# n是組名,g是分組後的dataframe

print

(df.groupby(

['x'])

.get_group(

'a')

,'\n'

)print

(df.groupby(

['x'])

.get_group(

'b')

,'\n'

)print

('-----'

)# .get_group()提取分組後的組

grouped = df.groupby(

['x'])

print

(grouped.groups)

print

(grouped.groups[

'a']

)# 也可寫:df.groupby('x').groups['a']

print

('-----'

)# .groups:將分組後的groups轉為dict

# 可以字典索引方法來檢視groups裡的元素

sz = grouped.size(

)print

(sz,

type

(sz)

)print

('-----'

)# .size():檢視分組後的長度

df = pd.dataframe(

)grouped = df.groupby(

['a'

,'b'])

.groups

print

(df)

print

(grouped)

print

(grouped[

('foo'

,'three')]

)# 按照兩個列進行分組

# 分組計算函式方法

s = pd.series([1

,2,3

,10,20

,30], index =[1

,2,3

,1,2

,3])

grouped = s.groupby(level=0)

# 唯一索引用.groupby(level=0),將同乙個index的分為一組

print

(grouped)

print

(grouped.first(),

'→ first:非nan的第乙個值\n'

)print

(grouped.last(),

'→ last:非nan的最後乙個值\n'

)print

(grouped.

sum(),

'→ sum:非nan的和\n'

)print

(grouped.mean(),

'→ mean:非nan的平均值\n'

)print

(grouped.median(),

'→ median:非nan的算術中位數\n'

)print

(grouped.count(),

'→ count:非nan的值\n'

)print

(grouped.

min(),

'→ min、max:非nan的最小值、最大值\n'

)print

(grouped.std(),

'→ std,var:非nan的標準差和方差\n'

)print

(grouped.prod(),

'→ prod:非nan的積\n'

)

# 多函式計算:agg()

df = pd.dataframe(

)print

(df)

print

(df.groupby(

'a')

.agg(

['mean'

,np.

sum]))

print

(df.groupby(

'a')

['b'

].agg())

# 函式寫法可以用str,或者np.方法

# 可以通過list,dict傳入,當用dict時,key名為columns → 更新pandas後會出現警告

# 盡量用list傳入

碼字不易,如果對您有幫助,就打賞一下吧o(∩_∩)o

Pandas之資料分組

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 tr...

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...

Pandas資料合併及分組

1 資料合併 import pandas as pd staff df pd.dataframe student df pd.dataframe print staff df print print student df pd.merge staff df,student df,how outer ...