天天看點

【pandas第二彈】一行代碼實作Excel透視功能

作者:nathanielwen

上一篇講了如何用pandas快速實作兩個Excel的比對(點選文章末尾的合集可檢視),這一篇我們繼續講pandas的騷操作。

‬場景

如果你經常和Excel打交道的話,一定處理過交叉表或者透視表。比如我有這樣一份資料:

【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')           

最終效果如下:

【pandas第二彈】一行代碼實作Excel透視功能

說明

因為核心就一行代碼,這裡解釋下各個參數的含義:

value對應Excel透視表中的值。

index對應Excel透視表中的行。

columns對應Excel透視表中的列。

margins代表展示彙總行/列。

margins代表彙總行/列的名稱。

最後,關于第一個參數df,還可以有騷操作,比如我想在原始資料裡面過濾掉,月份是2月和城市是上海的資料。可以把df改成:

df.query('~(Month == "Feb" & City == "Shanghai")')           

單引号裡是過濾的條件表達式,波浪線代表取反,小括号裡的是單個的過濾條件。

最終結果如下圖,可以看到2月份上海對應的格子變成了NaN。

【pandas第二彈】一行代碼實作Excel透視功能

是以,今天你學廢了嗎~

繼續閱讀