上一篇關於數據透視表的文章描述瞭如何使用 pandas 的 pivot_table 功能將數據以一種易於查看的方式組合和呈現。對於在 Excel 中使用過數據透視表的人來說,這個概念可能很熟悉。然而 pandas 有能力輕鬆地獲取數據並對其進行操作。這種橫截面能力使得 pandas 數據透視表在生成自定義報告時非常有用,這篇文章會解說關於匯出報表。
本文將給出一個簡短的例子說明如何操作數據透視表中的數據,用透視表數據的子集創建一個自定義的 Excel 報告。我認為這是一個非常有用的功能,很多人都可以使用。一旦你理解了這個功能你會更欣賞 Pandas 的製表技巧。
df = pd.read_excel("data/funnel.xlsx")
table = pd.pivot_table(df,
index=["Manager","Rep","Product"],
values=["Price","Quantity"],
aggfunc=[np.sum,np.mean],fill_value=0)
table
我們所該做的第一件事情就是讀取原先的資料集,與上次講述的相同,索引設定為 Manager, Rep 與 Product 做資料集的匯出。這邊這很有趣的地方在 xs 函數,其允許我向下抓取透視表的一個橫截面。我們也可以向下鑽取多個層次。
table.xs('Debra Henley', level=0)
你會發現,你在Excel中做的大量剪切和粘貼工作可以成為過去了。我們可以利用 get_level_values 來使其盡可能地無縫工作。例如,如果我們想看到所有的經理。
table.index.get_level_values(0) # see all the Manager values
table.index.get_level_values(1) # see all the rep values
甚至是抓取索引值也非常方便!
table.index.get_level_values(0).unique()
問題所在 我不得不相信,任何在Excel中創建過數據透視表的人都有這樣的需要,即把數據分成多個 "小塊",以便分發給不同的人,最終我們把這一切做輸出看看。
for manager in table.index.get_level_values(0).unique():
print(table.xs(manager, level=0))
完美的 Print !
今年沒組團,每一筆一字矢志不渝的獻身精神都是為歷史書寫下新頁,有空的話可以走走逛逛我們去年寫的文章。
Jerry 據說是個僅佔人口的 4% 人口的 INFP 理想主義者,總是從最壞的生活中尋找最好的一面,想方設法讓世界更好,內心的火焰和熱情可以光芒四射,畢業後把人生暫停了半年,緩下腳步的同時找了份跨領域工作。偶而散步、愛跟小動物玩耍。曾立過很多志,最近是希望當一個有夢想的人。
謝謝你的時間「訂閱,追蹤和留言」都是陪伴我走過 30 天鐵人賽的精神糧食。