上一篇講了如何用pandas快速實作兩個Excel的比對(點選文章末尾的合集可檢視),這一篇我們繼續講pandas的騷操作。
場景
如果你經常和Excel打交道的話,一定處理過交叉表或者透視表。比如我有這樣一份資料:
我可以通過透視功能很快生成一份這樣的資料:
實作
作為一個技術人員,如果我們使用Python來實作類似的功能,需要多少代碼呢?答案是1行。
import pandas as pd
df = pd.read_excel('~/Desktop/data.xlsx', sheet_name='Sheet1')
pd.pivot_table(df, values='Sales', index='Month', columns='City', aggfunc='sum', margins=True, margins_name='Total')
最終效果如下:
說明
因為核心就一行代碼,這裡解釋下各個參數的含義:
value對應Excel透視表中的值。
index對應Excel透視表中的行。
columns對應Excel透視表中的列。
margins代表展示彙總行/列。
margins代表彙總行/列的名稱。
最後,關于第一個參數df,還可以有騷操作,比如我想在原始資料裡面過濾掉,月份是2月和城市是上海的資料。可以把df改成:
df.query('~(Month == "Feb" & City == "Shanghai")')
單引号裡是過濾的條件表達式,波浪線代表取反,小括号裡的是單個的過濾條件。
最終結果如下圖,可以看到2月份上海對應的格子變成了NaN。
是以,今天你學廢了嗎~