最近小伙伴提出了幾個問題,如何用pandas實現execl中的匯總行。
關于這個問題,群里展開了激烈的討論,最終經過梳理總結出了以下兩個解決方法。一種是當做透視時直接使用參數margins,另一種是當無透視時手動造出匯總行。
pivot_table
問題(群成員"浮生如夢"):
我想統計一月到十二月的所有數據應該怎么寫呢?

解決方法
- 用法:
sum()、pivot_table
如果要對數據按行方向求和,直接使用sum()函數即可,設置參數axis=1(默認是axis=0列方向對列數據求和),然后將橫向求和結果賦給一個新的字段。此例中為求和,其他統計方式如mean、max、min等均同理。
# 生成測試數據
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)

此時已得到行方向的求和,如果我們想繼續計算列方向求和并顯示出來如何操作呢?可以借助pivot_table來實現,設置參數margins=True。
pd.pivot_table(df, index=df.index, aggfunc='sum', margins=True)

groupby+concat
問題(群成員"張晶"):
pandas里面如何實現類似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
該方法通過幾種用法的組合間接實現了行和列數據匯總。
- 對列數據的匯總求和比較取巧,使用
groupby實現了對整列數據求和,求和sum函數中需設置numeric_only參數,只對數值求和。得到列匯總結果后將其與原數據進行concat縱向拼接。 - 對行數據求和可以直接使用
sum函數,通過axis=1指定橫向求和。
# 增加列匯總數據
total = df.groupby(lambda _: '總計').sum(numeric_only=True)
# 與原數據縱向拼接
df_total = pd.concat([df,total]).fillna('/')
# 對原數據數值類型橫向求和
df_total['total'] = df_total.sum(numeric_only=True,axis=1)
df_total

如果想要對Team進行分組求和,可以通過transform實現組合求和并添加為一個新的求和列。
# 分組內求和
df_total['team_total'] = df_total.groupby(['Team'])['total'].transform('sum')
df_total

以上是本次分享內容。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
數據
+關注
關注
8文章
7335瀏覽量
94757 -
參數
+關注
關注
11文章
1869瀏覽量
33945 -
execl
+關注
關注
0文章
2瀏覽量
2320
發布評論請先 登錄
相關推薦
熱點推薦
請問STM32CubeIDE如何查看代碼總行數?
近期填寫資料,需要寫當前項目源代碼總行數,使用的STM32CubeIDE開發的,想請教一下,這個IDE怎么看代碼的總行數?
發表于 03-28 07:07
labview如何生成execl報表
本帖最后由 zhihuizhou 于 2011-11-19 20:24 編輯
請問哪位大俠有關于labview生產execl報表方面的資料呀?
發表于 11-19 16:11
怎么使用labview保存測試數據到execl?
大神們:怎么使用labview保存測試數據到execl,每次保存時都是從execl首行覆蓋式保存,怎么設置下一行保存?可以設置保存數據字體的顏色嗎?
發表于 12-12 15:58
pandas是什么?
系列文章目錄提示:寫完文章后,目錄可以自動生成,如何生成可參考右邊的幫助文檔文章目錄系列文章目錄前言一、pandas是什么?二、使用步驟1.引入庫2.讀入數據總結前言提示:這里可以添加本文要記錄
發表于 07-14 07:48
pandas是什么
提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔文章目錄前言一、pandas是什么?二、使用步驟1.引入庫2.讀入數據總結前言提示:這里可以添加本文要記錄的大概內容:例如:隨著
發表于 08-09 07:39
pandas使用步驟
提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔文章目錄前言一、pandas是什么?二、使用步驟1.引入庫2.讀入數據總結學習內容:學習時間:學習產出:前言一、pandas是什么?二
發表于 08-10 07:50
labview 讀取execl
初學,今天使用Labview 讀取 execl 內的文件并顯示數據,在execl內,只有一個sheet,沒有問題,增加一欄后,顯示只讀取了后面一欄,而且execl表格內sheet1 也被刪除了,怎么回事?
發表于 12-17 18:46
pandas是什么?
的幫助文檔文章目錄系列文章目錄前言一、pandas是什么?二、使用步驟1.引入庫 2.讀入數據 總結前言 本文章主要目的是對嵌入式式系統開發是怎么回事,通過易于理解與實現的角度對嵌入式開發進行詮釋,以及記錄日常工作中的心得體會。
發表于 12-24 08:05
pandas是什么?
文章目錄前言一、pandas是什么?二、使用步驟1.引入庫2.讀入數據總結前言一、pandas是什么?二、使用步驟1.引入庫代碼如下(示例):import numpy as npimport
發表于 01-11 07:53
pandas是什么?
提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔文章目錄前言一、pandas是什么?二、使用步驟1.引入庫2.讀入數據總結前言提示:這里可以添加本文要記錄的大概內容:例如:隨著
發表于 01-12 07:53
西門子S7-200PLC的PC Access軟件的在EXECL表格通信的資料概述
研討西門子S7-200小型PLC通過PC Access軟件與EXECL表格進行PPI(或USB-PPI)通信,將PLC的輸入和輸出狀態以及寄存器的數值顯示在EXECL表格中,并可通過EXECL
發表于 09-25 08:00
?30次下載
Pandas高級操作匯總
? 今天給大家分享一篇Pandas高級操作匯總~ ? 在數據分析和數據建模的過程中需要對數據進行清洗和整理等工作,有時需要對數據增刪字段。下面為大家介紹Pandas對數據的復雜查詢、數
如何實現Pandas的DataFrame轉換交互式表格
Pivottablejs是一個通過IPython widgets集成到Python中的JavaScript庫,允許用戶直接從DataFrame數據創建交互式和靈活的匯總報表。可以進行高效、清晰的數據分析和表示,幫助將數據從Pandas
如何用pandas實現execl中的匯總行
評論