約定:
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...