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