分組統計 - 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 ...