1. 資料分組簡介
資料分組的原理
在現實生活中,我們經常根據某些特徵對物件進行分組:書籍跟書籍一起,蔬菜跟蔬菜一起,人跟人在一起(你懂的)。在程式設計中也是類似的。 資料分組允許我們將大量資料拆分為更小、更易於管理的部分,進而分析它們。
在 pandas 中,可以使用 groupby
方法來進行分組,該方法可以將資料拆分為多個組,並對每個組執行不同的操作。例如,您可以按商店部門分組銷售額,然後計算每個部門的總收入。
以下是一個範例,展示這樣的操作:
import pandas as pd
# 創建一個包含銷售數據的 DataFrame
data = {'部門': ['食品', '科技', '食品', '書籍', '科技'],
'收入': [100, 200, 150, 50, 300]}
df = pd.DataFrame(data)
# 按部門分組並計算總收入
組 = df.groupby('部門')['收入'].sum()
print(組)
分組的應用範例
當需要比較不同類別之間的數據時,分組特別有用。例如,您在 HR 工作,想了解不同部門的平均薪資,或者您是市場行銷人員,想知道每個產品在哪個月的銷售最多。 使用 pandas 的分組功能可大大簡化這些任務。
2. 計算聚合函數
聚合函數簡介
聚合函數是一種專門用於一組資料並返回單一值的函數。最常見的有
sum
(總和),mean
(平均值),以及 count
(元素數量)。這些函數使得大量資訊可以轉化為簡單且易於理解的指標。
使用聚合函數
在上一個例子中,我們已看到如何計算總和。現在讓我們看看如何計算每個部門的平均值與銷售次數。
# 計算每個部門的平均收入
平均值 = df.groupby('部門')['收入'].mean()
print(平均值)
# 計算每個部門的銷售次數
次數 = df.groupby('部門')['收入'].count()
print(次數)
聚合計算的應用範例
假設您有一組有關網站訪問者的數據,並想了解每週每天平均有多少人訪問。這是一個典型的使用分組和 mean
函數的任務。
data = {'星期': ['一', '二', '三', '四', '五', '三', '二'],
'訪問量': [120, 150, 170, 160, 180, 300, 220]}
df = pd.DataFrame(data)
# 計算每週每天的平均訪問量
平均訪問量 = df.groupby('星期')['訪問量'].mean()
print(平均訪問量)
3. 實踐練習
分組與聚合計算的練習題
假設您有一組有關銷售的數據。目標是:根據類別進行分組,並計算總銷售額、平均訂單金額和每個類別的訂單數量。 這將幫助您了解哪些商品類別帶來了最大的利潤,以及潛在的「金礦」在哪裡。
data = {
'類別': ['電子產品', '服裝', '電子產品', '書籍', '書籍', '服裝'],
'訂單金額': [250, 100, 150, 200, 500, 300]
}
df = pd.DataFrame(data)
# 計算每個類別的總銷售額
總銷售額 = df.groupby('類別')['訂單金額'].sum()
print(總銷售額)
# 計算每個類別的平均訂單金額
平均訂單金額 = df.groupby('類別')['訂單金額'].mean()
print(平均訂單金額)
# 計算每個類別的訂單數量
訂單數量 = df.groupby('類別')['訂單金額'].count()
print(訂單數量)
分組結果討論與數據分析
在完成分組和聚合的任務後,進行數據分析是非常有用的。您可能會發現,例如,「書籍」類別的訂單總金額最大,這主要是由少量但金額較高的訂單貢獻的。 或者「服裝」類別的訂單數量最多,但平均訂單金額低於「電子產品」。
這類分析能夠幫助做出合理的商業決策,例如專注於增加訂單量大的類別的平均訂單金額,從而提升總營收。
4. 錯誤與注意事項
在進行分組操作時,一個常見的錯誤是忘記在使用聚合函數時加上括號。例如,寫成
df.groupby('類別').sum()
,而不是
df.groupby('類別')['訂單金額'].sum()
。
此外,有時可能會遇到數據缺失的問題。Pandas 提供了方便的方法來處理缺失值,例如 fillna()
,它允許您用指定的值替換缺失值,以避免計算結果的偏差。
另外,請確保數據的類型是正確的。有時數字列可能會被讀取為字串,嘗試對這些數據進行聚合時會出現錯誤。
如果您需要深入學習 pandas 的分組方法,請查閱 pandas 官方文檔 ,那裡提供了更詳盡的介紹和範例。
GO TO FULL VERSION