Python+Pandas實現數據透視表
大傢好,我是丁小傑。
對於數據透視表,相信對於 Excel 比較熟悉的小夥伴都知道如何使用它,並瞭解它的強大之處,而在pandas
中要實現數據透視就要用到pivot_table
瞭。
導入示例數據
首先導入演示的數據集。
import pandas as pd df = pd.read_csv('銷售目標.csv') df.head()
參數說明
主要參數:
data
:待操作的 DataFramevalues
:被聚合操作的列,可選項index
:行分組鍵,作為結果 DataFrame 的行索引columns
:列分組鍵,作為結果 DataFrame 的列索引aggfunc
:聚合函數/函數列表,默認 numpy.mean 這裡要註意如果 aggfunc 中存在函數列表,則返回的 DataFrame 中會顯示函數名稱fill_value
:默認 None,可設定缺省值dropna
:默認 True,如果列的所有值都是 NaN,將被刪除;False 則保留margins
:默認 False,設置為 True 可以添加行/列的總計margins_name
:默認顯示 'ALL',當margins = True
時,可以設定 margins 行/列的名稱
常用操作
使用pivot_table
時必須要指定index
,因為計算時要根據index
進行聚合。
pd.pivot_table(df.head(20), index='訂單日期', aggfunc=np.sum)
通過指定value
來選擇被聚合的列。
pd.pivot_table(df.head(20), values='銷售目標', index='訂單日期', aggfunc=np.sum)
當隻指定index
進行聚合時,其實用groupby
可以實現同樣的效果。
df.head(20).groupby(['訂單日期'])['銷售目標'].sum().reset_index()
添加columns
參數,對列分組。
pd.pivot_table(df.head(10), values='銷售目標', index=['訂單日期', '類別'], columns='細分', aggfunc=np.sum)
對於上面結果中的空值,使用fill_value
參數統一填充為0
pd.pivot_table(df.head(10), values='銷售目標', index=['訂單日期', '類別'], columns=['細分'], aggfunc=np.sum, fill_value=0)
現在按年份來統計銷售數據,註意此時的aggfunc
參數,當參數值包含列表時,在結果DataFrame
中就會顯示函數名稱。
pd.pivot_table(df, values='銷售目標', index=['年份', '類別'], columns='細分', aggfunc=[np.sum])
如果需要添加合計列,隻需指定margins=True
即可,同時根據需要指定合計名稱。
pd.pivot_table(df, values='銷售目標', index=['年份', '類別'], columns='細分', aggfunc=np.sum, margins=True, margins_name='合計')
當然與groupby
類似,對於計算函數我們可以同時指定多種方式。
pd.pivot_table(df, values='銷售目標', index=['年份', '類別'], columns=['細分'], aggfunc={'銷售目標': [max, np.sum]}, fill_value=0)
到此這篇關於Python+Pandas實現數據透視表的文章就介紹到這瞭,更多相關Python 數據透視表內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python實現數據透視表詳解
- 一文搞懂Python中pandas透視表pivot_table功能
- python 用pandas實現數據透視表功能
- 一文搞懂Pandas數據透視的4個函數的使用
- Python pandas軸旋轉stack和unstack的使用說明