Python+Pandas實現數據透視表

大傢好,我是丁小傑。

對於數據透視表,相信對於 Excel 比較熟悉的小夥伴都知道如何使用它,並瞭解它的強大之處,而在pandas中要實現數據透視就要用到pivot_table瞭。

導入示例數據

首先導入演示的數據集。

import pandas as pd

df = pd.read_csv('銷售目標.csv')
df.head()

參數說明

主要參數:

  • data:待操作的 DataFrame
  • values:被聚合操作的列,可選項
  • 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!

推薦閱讀: