DataFrame.pivot_table(values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=False, sort=True)
官網的範例:
df = pd.DataFrame({"A": ["foo", "foo", "foo", "foo", "foo",
"bar", "bar", "bar", "bar"],
"B": ["one", "one", "one", "two", "two",
"one", "one", "two", "two"],
"C": ["small", "large", "large", "small",
"small", "large", "small", "small",
"large"],
"D": [1, 2, 2, 3, 3, 4, 5, 6, 7],
"E": [2, 4, 5, 5, 6, 6, 8, 9, 9]})
![Python如何做excel的樞紐分析? DataFrame .pivot_table (values=None, index=None, columns=None, aggfunc='mean') ; df.groupby(['A', 'B', 'C'], sort=False)['D'].sum().unstack('C') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230325142358_98.png)
只能意會,很難言傳
table = pd.pivot_table(df, values='D', index=['A', 'B'],
columns=['C'], aggfunc=np.sum)
![Python如何做excel的樞紐分析? DataFrame .pivot_table (values=None, index=None, columns=None, aggfunc='mean') ; df.groupby(['A', 'B', 'C'], sort=False)['D'].sum().unstack('C') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230325142934_58.png)
df.groupby(['A', 'B', 'C'], sort=False)['D'].sum().unstack('C')
這段程式碼使用了 groupby 和 unstack 方法來建立一個資料透視表(pivot table),其中 sort=False 參數用於關閉對資料進行排序。具體來說,首先對 DataFrame 進行分組操作,按照 ‘A’, ‘B’, ‘C’ 欄位進行分組,同時關閉排序,最後對 ‘D’ 欄位進行加總,得到一個多層次索引的 Series。接著調用 unstack 方法,將 ‘C’ 欄位的唯一值作為列索引,同時將 ‘A’, ‘B’ 欄位作為欄索引,得到一個 DataFrame。在這個 DataFrame 中,’D’ 欄位的值就對應了每個 (‘A’, ‘B’) 組合下,不同 ‘C’ 值的加總結果。
aggfunc:
![Python如何做excel的樞紐分析? DataFrame .pivot_table (values=None, index=None, columns=None, aggfunc='mean') ; df.groupby(['A', 'B', 'C'], sort=False)['D'].sum().unstack('C') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230325143517_51.png)
最簡單放function,
也可以放 list of functions
也可以放dict
{column name : function name }
{column name : list of functions }
table = pd.pivot_table(df, values=['D', 'E'],
index=['A', 'C'],
aggfunc={'D': np.mean,
'E': [min, max, np.mean]})
![Python如何做excel的樞紐分析? DataFrame .pivot_table (values=None, index=None, columns=None, aggfunc='mean') ; df.groupby(['A', 'B', 'C'], sort=False)['D'].sum().unstack('C') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230325144112_57.png)
‘E’: [min, max, np.mean]
list是有序的,依序為
min, max, np.mean
但return的table
col name排序為
max, mean, min
(依字母順序)
雖然有sort 參數
可以改設定 sort = False
實測對col 不一定有效
只影響index:
![Python如何做excel的樞紐分析? DataFrame .pivot_table (values=None, index=None, columns=None, aggfunc='mean') ; df.groupby(['A', 'B', 'C'], sort=False)['D'].sum().unstack('C') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230325144954_14.png)
若要依據自己指定的順序
table.reindex( columns=[ lisCol[0],lisCol[-1],lisCol[1],lisCol[2] ] )
![Python如何做excel的樞紐分析? DataFrame .pivot_table (values=None, index=None, columns=None, aggfunc='mean') ; df.groupby(['A', 'B', 'C'], sort=False)['D'].sum().unstack('C') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230325153031_49.png)
使用 margins=True
import pandas as pd
data = {
'class': ['A', 'A', 'B', 'B', 'C', 'C'],
'subject': ['Math', 'Science', 'Math', 'Science', 'Math', 'Science'],
'score': [80, 90, 85, 95, 70, 80]
}
df = pd.DataFrame(data)
result = pd.pivot_table(df, index='class', columns='subject', values='score',
aggfunc='mean', margins=True, margins_name='Total')
print(result)
![Python如何做excel的樞紐分析? DataFrame .pivot_table (values=None, index=None, columns=None, aggfunc='mean') ; df.groupby(['A', 'B', 'C'], sort=False)['D'].sum().unstack('C') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230325145852_69.png)
result1 = pd.pivot_table(df,
index='class',
values='score',
aggfunc=['mean', 'sum', 'count'],
margins=True,
margins_name='Total')
![Python如何做excel的樞紐分析? DataFrame .pivot_table (values=None, index=None, columns=None, aggfunc='mean') ; df.groupby(['A', 'B', 'C'], sort=False)['D'].sum().unstack('C') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230325145906_35.png)
推薦hahow線上學習python: https://igrape.net/30afN
![Python如何做excel的樞紐分析? DataFrame .pivot_table (values=None, index=None, columns=None, aggfunc='mean') ; df.groupby(['A', 'B', 'C'], sort=False)['D'].sum().unstack('C') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230325141855_86.png)
![Python如何做excel的樞紐分析? DataFrame .pivot_table (values=None, index=None, columns=None, aggfunc='mean') ; df.groupby(['A', 'B', 'C'], sort=False)['D'].sum().unstack('C') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230328094642_27.png)








![Python: 如何使用pandas.to_numeric ( df[‘numbers’], errors=’coerce’) 將非數值型資料轉為NaN? df[‘numbers’].describe() 簡述統計資料 Python: 如何使用pandas.to_numeric ( df[‘numbers’], errors=’coerce’) 將非數值型資料轉為NaN? df[‘numbers’].describe() 簡述統計資料](https://i2.wp.com/savingking.com.tw/wp-content/uploads/2024/05/20240501052102_0.png?quality=90&zoom=2&ssl=1&resize=350%2C233)

近期留言