Pandas詳解二十五之聚合運算agg

2021-08-26 05:35:00 字數 2826 閱讀 5474

約定:

import pandas as pd
在資料分析中,對資料聚合(求和、平均值等)通常是不可避免的。在將資料分組(groupby)後,新手若不知函式 agg() 的情況下,很有可能寫出二三十行的for迴圈只為求每個分組的平均值。在這裡,介紹個強大的函式:agg() ,能讓你的**縮減到一行。

建立物件和分組

df1=pd.dataframe()

df1

***smoker

ageweight0f

y211201fn

301002m

y171323fy

371404m

n40945

my18896f

y26123

grouped=df1.groupby(['***','smoker'])

# ***有 f m 二值,smoker有 y n 二值,故分成四組。

1 求單列下聚合

grouped['age'].agg('mean')
***  smoker

f n 30.0

y 28.0

m n 40.0

y 17.5

name: age, dtype: float64

2 求多列下聚合

grouped.agg('mean')

ageweight

***smokerfn

30.0

100.000000

y28.0

127.666667mn

40.0

94.000000

y17.5

110.500000

3 求多種聚合運算

grouped['age'].agg(['min','max'])

minmax

***smokerfn

3030y21

37mn40

40y1718

4 求多種聚合運算的同時更改列名

grouped['age'].agg([('a','mean'),('b','max')])
ab

***smokerfn

30.030y

28.037m

n40.040y

17.518

5 不同的列運用不同的聚合函式

grouped.agg()

ageweight

summean

minmax

***smokerfn

3030.0

100100y84

28.0

120140mn

4040.0

9494y35

17.5

89132

6 使用自定義的聚合函式

def

max_cut_min

(group):

return group.max()-group.min()

grouped.agg(max_cut_min)

ageweight

***smokerfn

00y16

20mn0

0y143

7 方便的descibe

grouped.describe()

ageweight

count

mean

stdmin

25%50%

75%max

count

mean

stdmin

25%50%

75%max

***smokerfn

1.030.0

nan30.0

30.00

30.0

30.00

30.0

1.0100.000000

nan100.0

100.00

100.0

100.00

100.0

y3.0

28.0

8.185353

21.0

23.50

26.0

31.50

37.0

3.0127.666667

10.785793

120.0

121.50

123.0

131.50

140.0mn

1.040.0

nan40.0

40.00

40.0

40.00

40.0

1.094.000000

nan94.0

94.00

94.0

94.00

94.0

y2.0

17.5

0.707107

17.0

17.25

17.5

17.75

18.0

2.0110.500000

30.405592

89.0

99.75

110.5

121.25

132.0

謝謝大家的瀏覽,

希望我的努力能幫助到您,

共勉!

二十五 二進位制日誌之GTID模式

gtid介紹 從5.7開始建議將二進位制日誌記錄模式改為gtid記錄模式 對於binlog中的每乙個事務,都會生成乙個gtid號碼 這裡的事務對於ddl,dcl語句來講每乙個event就是乙個事務,就會有乙個gtid號,跟事件一樣 對於dml語句來講,從begin到commit,是乙個事務,就有乙個...

Pandas詳解二十四之寫入CSV Excel檔案

約定 import pandas as pd import numpy as np import sys寫入csv檔案是最常用的,csv檔案預設用 作為分隔符。df1.to csv path or buf none,sep na rep float format none,columns none,...

shell訓練計畫30天之第二十五天

例67 監控cpu使用率 要求 寫乙個監控伺服器cpu使用率監控監本 思路 用top bn1命令,取當前空閒cpu百分比值 只取整數部分 然後用100去減這個數值 bin bash while docpu i top bn1 grep cpu s sed s awk f cpu u echo 100...