iT邦幫忙

2022 iThome 鐵人賽

DAY 22
1

樞紐匯出表 Reports from Pivot Table

上一篇關於數據透視表的文章描述瞭如何使用 pandas 的 pivot_table 功能將數據以一種易於查看的方式組合和呈現。對於在 Excel 中使用過數據透視表的人來說,這個概念可能很熟悉。然而 pandas 有能力輕鬆地獲取數據並對其進行操作。這種橫截面能力使得 pandas 數據透視表在生成自定義報告時非常有用,這篇文章會解說關於匯出報表。

再一次的:列與值的拆解呈現 Row & Value

本文將給出一個簡短的例子說明如何操作數據透視表中的數據,用透視表數據的子集創建一個自定義的 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

https://ithelp.ithome.com.tw/upload/images/20221006/20140740pQd1zx9zbU.png

我們所該做的第一件事情就是讀取原先的資料集,與上次講述的相同,索引設定為 Manager, Rep 與 Product 做資料集的匯出。這邊這很有趣的地方在 xs 函數,其允許我向下抓取透視表的一個橫截面。我們也可以向下鑽取多個層次。

table.xs('Debra Henley', level=0)

https://ithelp.ithome.com.tw/upload/images/20221006/2014074040TQjnXNXE.png

你會發現,你在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

https://ithelp.ithome.com.tw/upload/images/20221006/20140740ivbanrtOzt.png
甚至是抓取索引值也非常方便!

table.index.get_level_values(0).unique()

https://ithelp.ithome.com.tw/upload/images/20221006/20140740V2XGYKA00N.png

問題所在 我不得不相信,任何在Excel中創建過數據透視表的人都有這樣的需要,即把數據分成多個 "小塊",以便分發給不同的人,最終我們把這一切做輸出看看。

for manager in table.index.get_level_values(0).unique():
    print(table.xs(manager, level=0))

https://ithelp.ithome.com.tw/upload/images/20221006/20140740ujJu0RNvMz.png

完美的 Print !

謝謝大家的觀看,但歷史的痕跡會持續下去

今年沒組團,每一筆一字矢志不渝的獻身精神都是為歷史書寫下新頁,有空的話可以走走逛逛我們去年寫的文章。


Hi'Jerry均

Jerry 據說是個僅佔人口的 4% 人口的 INFP 理想主義者,總是從最壞的生活中尋找最好的一面,想方設法讓世界更好,內心的火焰和熱情可以光芒四射,畢業後把人生暫停了半年,緩下腳步的同時找了份跨領域工作。偶而散步、愛跟小動物玩耍。曾立過很多志,最近是希望當一個有夢想的人。

謝謝你的時間「訂閱,追蹤和留言」都是陪伴我走過 30 天鐵人賽的精神糧食。


上一篇
Ɖ21-溫沙拉/ 進階樞紐分析呈現與過濾式
下一篇
Ɖ23-溫沙拉/ 簡單 Pandas 匯出報表至 Excel
系列文
先別急著學 Python | The Secret to Success in Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言