請思考:
1 透視表是什麼?會用Excel做透視表嗎?
2 pandas如何做透視表分析?使用什麼函式?函式的引數如何選擇和設定?
我建立了Python語言微信群,定位:Python語言學習與實踐,您若是想加入,請新增我的微信:luqin360,備註:Python入群
1 透視表介紹
資料透視表是一個用來總結和展示資料的強大工具。pandas提供了pivot_table()函式以快捷地把DataFrame轉換為透視表。
2 匯入資料
程式碼
# 匯入Python庫
import numpy as np
import pandas as pd
# 讀取Excel檔案,並且檢視前5行資料集
df = pd.read_excel('sales-funnel.xlsx')
df.head()
結果
變數集資料型別以及型別轉換
程式碼
# 檢視變數集資料型別
df.dtypes
# 變數Status型別轉換和設定要檢視的順序
df['Status'] = df['Status'].astype('category')
df['Status'].cat.set_categories(["won","pending","presented","declined"],inplace=True)
結果
3 資料透視表分析
簡單的透視表,指定DataFrame裡面需要透視的一個index,以Name為index做透視表。
程式碼
# 指定一個DataFrame和它的一個的index做簡單的透視表
pd.pivot_table(df, index=['Name'])
結果
請思考:透視表預設的計算邏輯和展示方式是什麼?
在資料框中選擇多個index做透視表。
程式碼
pd.pivot_table(df, index=['Name', 'Rep', 'Manager'])
結果
透過引數values指定我們所關心的列。
程式碼
pd.pivot_table(df, index=['Manager', 'Rep'], values=['Price'])
結果
計算邏輯預設是對數值型變數做平均,透過引數aggfunc設定所要聚合計算的邏輯,比方說求和,最小值,最大值等。
程式碼
pd.pivot_table(df, index=['Manager', 'Rep'], values=['Price'], aggfunc=np.sum)
結果
引數aggfunc可以接受一個聚合計算的串列,例如:求和與計數
程式碼
pd.pivot_table(df, index=['Manager', 'Rep'], values=['Price'], aggfunc=[np.sum, len])
結果
引數columns實現對透視表做進一步細分或者下鑽。
程式碼
pd.pivot_table(df, index=['Manager', 'Rep'], values=['Price'], columns=['Product'], aggfunc=[np.sum])
結果
引數fill_value對透視表裡面缺失值做處理
程式碼
pd.pivot_table(df, index=['Manager', 'Rep'], values=['Price'], columns=['Product'], aggfunc=[np.sum], fill_value=0)
結果
引數margins對透視表做總數描述
程式碼
pd.pivot_table(df, index=['Manager', 'Rep', 'Product'], values=['Price', 'Quantity'], aggfunc=[np.sum, np.mean], fill_value=0, margins=True)
結果
透過對引數aggfunc傳遞字典來實現對引數values裡面指定的列執行所需的聚合計算操作。
程式碼
table = pd.pivot_table(df, index=['Manager', 'Status'], columns=['Product'], values=['Quantity', 'Price'], aggfunc={'Quantity':len, 'Price':[np.sum, np.mean]}, fill_value=0)
table
結果
4 使用query()函式對透視表做過濾操作
實體1
程式碼
table.query('Manager == ["Debra Henley"]')
結果
實體2
程式碼
table.query('Status == ["pending","won"]')
結果
5 總結
pandas透過pivot_table()函式可以實現透視表,透過設定函式裡面的不同引數以達成不同的標的。常用的引數包括index, values, aggfunc, columns, fill_value, margins等。
附錄:
本文的資料集,notebook,請點選閱讀原文下載。
您在閱讀中有什麼問題,請留言。若是覺得有用,請您點贊和分享給其他朋友,感謝支援和分享。
朋友會在“發現-看一看”看到你“在看”的內容