1. 為報表結構化數據
當你製作報表時,重要的不僅僅是把一堆數據漂亮地包裝起來,而是讓信息更清晰易懂。數據的準備直接影響到你的報表是否容易被快速理解。
樞紐分析表:我們的報表瑞士軍刀
樞紐分析表是一種強大的數據總結、聚合與展示方式,經常用於 Excel 的分析。在 pandas 中,我們可以用
pivot_table
方法簡單地創建樞紐分析表。
讓我們看一個簡單的例子。
假設你有以下有關商店銷售的數據:
import pandas as pd
data = {
'產品': ['橙子', '蘋果', '香蕉', '橙子', '香蕉', '蘋果'],
'月份': ['一月', '一月', '一月', '二月', '二月', '二月'],
'銷售量': [150, 200, 250, 130, 180, 210]
}
df = pd.DataFrame(data)
為了創建一個顯示每個產品在每個月份的銷售總額的樞紐表,我們可以使用
pivot_table
:
pivot_df = df.pivot_table(values='銷售量', index='產品', columns='月份', aggfunc='sum')
print(pivot_df)
這個簡單的例子展示了如何快速地根據分類和日期聚合數據——它是報表的理想基礎。
2. 使用 pandas 方法準備數據
方法 pivot_table
pivot_table
方法非常靈活,它不僅能對數據進行求和,還可以應用其他聚合函數,比如 mean
、count
等。
我們來看看如何轉換數據顯示銷售量的平均值:
pivot_mean_df = df.pivot_table(values='銷售量', index='產品', columns='月份', aggfunc='mean')
print(pivot_mean_df)
方法 crosstab
pandas 中的 crosstab
方法類似於樞紐表,但它用於計算頻率分佈。假設我們想要計算每個產品在不同月份的銷售次數:
cross_df = pd.crosstab(df['產品'], df['月份'])
print(cross_df)
這個方法很有用,當你需要研究分類數據的分佈或分析事件頻率時。
3. 通過多維索引調整數據顯示
多維索引
是的,pandas 允許你超越二維數據,使用多維索引。這對於表示具有多層次聚合的數據非常有用。例如,在我們的數據集中添加“年”並創建多維索引。
data['年'] = [2023, 2023, 2023, 2024, 2024, 2024]
df = pd.DataFrame(data)
multi_pivot_df = df.pivot_table(values='銷售量', index=['年', '產品'], columns='月份', aggfunc='sum')
print(multi_pivot_df)
現在,我們的數據按年份和產品聚合,使其更具信息性。
4. 實踐與分析
讓我們把所學的內容運用到實踐中。任務:準備銷售報表數據。
假設你有以下銷售數據:
data = {
'產品': ['橙子', '橙子', '蘋果', '蘋果', '香蕉', '香蕉'],
'月份': ['一月', '二月', '一月', '二月', '一月', '二月'],
'年': [2023, 2023, 2024, 2024, 2023, 2024],
'銷售量': [150, 200, 180, 220, 120, 130]
}
df = pd.DataFrame(data)
你的任務是創建一個樞紐表,顯示每個產品在每個月份的銷售總額,包括按年份的總計數據。
pivot_total_df = df.pivot_table(values='銷售量', index=['年', '產品'], columns='月份', aggfunc='sum', margins=True, margins_name='總計')
print(pivot_total_df)
這一行“總計”將顯示所有分類的總和,這在全面總覽時非常必要。
5. 討論數據展示和分析的策略
利用 pandas 準備報表數據不僅是數學,同時也是一門藝術。這個過程的重要部分是選擇最能說明問題的數據展示方式,無論是簡單的匯總表格還是複雜的圖表。在現實生活中,這樣的結構化不僅有助於理解當前指標,還能讓你做出有根據的決策。你可能會發現自己像個魔術師一樣,把無聊的數值行變成清晰的畫面。
如果你想成為報表自動化準備的大師,不要忘記 pandas 的可能性,也不要懶於嘗試各種方法和技巧。這項技能不僅在製作分析報表時有用,還能在面試和未來職業生涯中大放異彩。勇敢地探索數據的世界,讓你的報表既有趣又信息量大,同時易於理解!
GO TO FULL VERSION