歡迎光臨
每天分享高質量文章

學習|pandas透視表分析

請思考:

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,請點選閱讀原文下載。

您在閱讀中有什麼問題,請留言。若是覺得有用,請您點贊和分享給其他朋友,感謝支援和分享。

已同步到看一看
贊(0)

分享創造快樂