Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( “display.max_columns”, None)

加入好友
加入社群
Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( "display.max_columns", None) - 儲蓄保險王

假設資料結構如下:

Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( "display.max_columns", None) - 儲蓄保險王

具有雙層index

如何讀取?

df = pd.read_excel(fpath, index_col =[0,1])

 

pd.set_option ( “display.max_columns“, None)

則可以顯示所有列

讀進來的DataFrame:

Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( "display.max_columns", None) - 儲蓄保險王

 

groupbyIdxObj = df.groupby( [“Range Index(距離索引)”] )

#<pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000019D6F0A7250>

#groupbyIdxObj為一個 DataFrameGroupBy object

#groupby()裡面放的是list

 

groupbyIdxObj.size():

#算出相同Range Index重複了幾次

Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( "display.max_columns", None) - 儲蓄保險王

 

groupbyIdxObj.agg({“Peak Value(DB)” : “mean”})

Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( "display.max_columns", None) - 儲蓄保險王

groupbyIdxObj.agg({“Peak Value(DB)”:”mean”})

這行程式碼對 groupbyIdxObj 進行了分組操作,

其中使用了一個字典作為參數傳遞給 agg 方法。

字典的鍵是column name,

表示對該column進行聚合操作。

這裡只有一個鍵 “Peak Value(DB)”,

表示對該column進行平均值聚合。

#groupbyIdxObj.agg({“Peak Value(DB)”:[“mean”,”sum”]})

#是可用語法

值是一個字符串,表示使用哪個聚合函數。

這裡使用的是 mean 函數,表示求該列的平均值。

綜合起來,這行程式碼的作用是

groupbyIdxObj 進行分組,

並計算每組 “Peak Value(DB)” 的平均值,

返回一個新的 DataFrame 對象。

groupbyIdxObj.agg({“Peak Value(DB)”: [“mean”,”sum”] }):

Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( "display.max_columns", None) - 儲蓄保險王

groupbyIdxObj.agg( {“Peak Value(DB)”: [“mean”, “sum”, list ] }) :

Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( "display.max_columns", None) - 儲蓄保險王

Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( "display.max_columns", None) - 儲蓄保險王

 

groupbyIdxObj.agg( { “Peak Value(DB)” : “mean” } )

.agg() 裡面放dict

dict的value可以為str,也可以為list

若value為list,

返回的DataFrame會有雙層column name

Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( "display.max_columns", None) - 儲蓄保險王

Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( "display.max_columns", None) - 儲蓄保險王

官網對於agg()的範例(點此或下圖連結官網):

Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( "display.max_columns", None) - 儲蓄保險王

 

count = groupbyIdxObj.size()

count為Series

轉為DataFrame的話,

只有單層column name

若與雙層column name 的DF做concat()

會變成單層column name的DF

 

count = groupbyIdxObj.size()

count.name=”Range Index重複次數”

#將groupbyIdxObj.size() 賦值給count這個Series

#並將Series更名

Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( "display.max_columns", None) - 儲蓄保險王

 

peakValueDBmean = groupbyIdxObj.agg({“Peak Value(DB)” : “mean”})

peakValueDBmean.columns=[“Peak Value(DB) mean group by Range Index”]

“””將groupbyIdxObj.agg({“Peak Value(DB)”:”mean”})

賦值給peakValueDBmean 這個DataFrame

DataFrame使用.columns更新欄標籤

“””

Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( "display.max_columns", None) - 儲蓄保險王

 

countIdx_DBmean = pd.concat([count,peakValueDBmean], axis=1 )

“”” #將count , peakValueDBmean

concat()起來

別忘記 axis=1

如果結尾再多 .reset_index()

可以將Range Index推出來當資料column “””

Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( "display.max_columns", None) - 儲蓄保險王

跟Excel樞紐分析比較:

Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( "display.max_columns", None) - 儲蓄保險王

Libre Office樞紐分析表的設定:

Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( "display.max_columns", None) - 儲蓄保險王

推薦hahow線上學習python: https://igrape.net/30afN

加入好友
加入社群
Python 如何做excel的樞紐分析? pandas.DataFrame.groupby() ; .agg( {column name: function name} ) ; 如何讀取多層index的xlsx檔案? df = pandas.read_excel (fpath, index_col =[0,1]) ; 如何顯示所有欄? pd.set_option ( "display.max_columns", None) - 儲蓄保險王

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *