最近小伙伴提出了幾個(gè)問題,如何用pandas實(shí)現(xiàn)execl中的匯總行。
關(guān)于這個(gè)問題,群里展開了激烈的討論,最終經(jīng)過梳理總結(jié)出了以下兩個(gè)解決方法。一種是當(dāng)做透視時(shí)直接使用參數(shù)margins
,另一種是當(dāng)無透視時(shí)手動(dòng)造出匯總行。
pivot_table
問題(群成員"浮生如夢(mèng)"):
我想統(tǒng)計(jì)一月到十二月的所有數(shù)據(jù)應(yīng)該怎么寫呢?
解決方法
- 用法:
sum()
、pivot_table
如果要對(duì)數(shù)據(jù)按行方向求和,直接使用sum()
函數(shù)即可,設(shè)置參數(shù)axis=1
(默認(rèn)是axis=0列方向?qū)α袛?shù)據(jù)求和),然后將橫向求和結(jié)果賦給一個(gè)新的字段。此例中為求和,其他統(tǒng)計(jì)方式如mean、max、min等均同理。
# 生成測(cè)試數(shù)據(jù)
df = pd.DataFrame(np.random.randint(10,100,(9,12)),
columns=['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'])
# 橫向求和
df['total'] = df.sum(axis=1)
此時(shí)已得到行方向的求和,如果我們想繼續(xù)計(jì)算列方向求和并顯示出來如何操作呢?可以借助pivot_table
來實(shí)現(xiàn),設(shè)置參數(shù)margins=True
。
pd.pivot_table(df, index=df.index, aggfunc='sum', margins=True)
groupby+concat
問題(群成員"張晶"):
pandas里面如何實(shí)現(xiàn)類似excel中的匯總行?
kv = {'Name': {0: 'John', 1: 'Mack', 2: 'Lilei', 3: 'Kevin', 4: 'Alin', 5: 'Bob'},
'Team': {0: 'A', 1: 'A', 2: 'B', 3: 'B', 4: 'C', 5: 'C'},
'Jan': {0: 9, 1: 9, 2: 8, 3: 10, 4: 7, 5: 9},
'Feb': {0: 10, 1: 7, 2: 8, 3: 7, 4: 6, 5: 8},
'Mar': {0: 8, 1: 9, 2: 7, 3: 8, 4: 8, 5: 7},
'Apri': {0: 8, 1: 7, 2: 6, 3: 7, 4: 6, 5: 8}}
df = pd.DataFrame(kv)
解決方法
用法:groupby
、concat
、sum
、transform
該方法通過幾種用法的組合間接實(shí)現(xiàn)了行和列數(shù)據(jù)匯總。
- 對(duì)列數(shù)據(jù)的匯總求和比較取巧,使用
groupby
實(shí)現(xiàn)了對(duì)整列數(shù)據(jù)求和,求和sum
函數(shù)中需設(shè)置numeric_only
參數(shù),只對(duì)數(shù)值求和。得到列匯總結(jié)果后將其與原數(shù)據(jù)進(jìn)行concat
縱向拼接。 - 對(duì)行數(shù)據(jù)求和可以直接使用
sum
函數(shù),通過axis=1
指定橫向求和。
# 增加列匯總數(shù)據(jù)
total = df.groupby(lambda _: '總計(jì)').sum(numeric_only=True)
# 與原數(shù)據(jù)縱向拼接
df_total = pd.concat([df,total]).fillna('/')
# 對(duì)原數(shù)據(jù)數(shù)值類型橫向求和
df_total['total'] = df_total.sum(numeric_only=True,axis=1)
df_total
如果想要對(duì)Team進(jìn)行分組求和,可以通過transform
實(shí)現(xiàn)組合求和并添加為一個(gè)新的求和列。
# 分組內(nèi)求和
df_total['team_total'] = df_total.groupby(['Team'])['total'].transform('sum')
df_total
以上是本次分享內(nèi)容。
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7006瀏覽量
88955 -
參數(shù)
+關(guān)注
關(guān)注
11文章
1832瀏覽量
32197 -
execl
+關(guān)注
關(guān)注
0文章
2瀏覽量
2225
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論