
- Python Pandas 教程
- Python Pandas - 首頁
- Python Pandas - 簡介
- Python Pandas - 環境搭建
- Python Pandas - 基礎
- Python Pandas - 資料結構介紹
- Python Pandas - 索引物件
- Python Pandas - 面板
- Python Pandas - 基本功能
- Python Pandas - 資料索引與選擇
- Python Pandas - Series
- Python Pandas - Series
- Python Pandas - Series 物件切片
- Python Pandas - Series 物件的屬性
- Python Pandas - Series 物件的算術運算
- Python Pandas - 將 Series 轉換為其他物件
- Python Pandas - DataFrame
- Python Pandas - DataFrame
- Python Pandas - 訪問 DataFrame
- Python Pandas - DataFrame 物件切片
- Python Pandas - 修改 DataFrame
- Python Pandas - 從 DataFrame 中刪除行
- Python Pandas - DataFrame 的算術運算
- Python Pandas - IO 工具
- Python Pandas - IO 工具
- Python Pandas - 處理 CSV 格式
- Python Pandas - 讀取和寫入 JSON 檔案
- Python Pandas - 從 Excel 檔案讀取資料
- Python Pandas - 將資料寫入 Excel 檔案
- Python Pandas - 處理 HTML 資料
- Python Pandas - 剪貼簿
- Python Pandas - 處理 HDF5 格式
- Python Pandas - 與 SQL 的比較
- Python Pandas - 資料處理
- Python Pandas - 排序
- Python Pandas - 重索引
- Python Pandas - 迭代
- Python Pandas - 連線
- Python Pandas - 統計函式
- Python Pandas - 描述性統計
- Python Pandas - 處理文字資料
- Python Pandas - 函式應用
- Python Pandas - 選項和自定義
- Python Pandas - 視窗函式
- Python Pandas - 聚合操作
- Python Pandas - 合併/連線
- Python Pandas - 多級索引
- Python Pandas - 多級索引基礎
- Python Pandas - 使用多級索引進行索引
- Python Pandas - 使用多級索引進行高階重索引
- Python Pandas - 重新命名多級索引標籤
- Python Pandas - 對多級索引進行排序
- Python Pandas - 二元運算
- Python Pandas - 二元比較運算
- Python Pandas - 布林索引
- Python Pandas - 布林掩碼
- Python Pandas - 資料重塑和透視表
- Python Pandas - 透視表
- Python Pandas - 堆疊和取消堆疊
- Python Pandas - 熔化
- Python Pandas - 計算虛擬變數
- Python Pandas - 分類資料
- Python Pandas - 分類資料
- Python Pandas - 分類資料的排序和排序
- Python Pandas - 分類資料的比較
- Python Pandas - 處理缺失資料
- Python Pandas - 缺失資料
- Python Pandas - 填充缺失資料
- Python Pandas - 缺失值的插值
- Python Pandas - 刪除缺失資料
- Python Pandas - 對缺失資料進行計算
- Python Pandas - 處理重複資料
- Python Pandas - 重複資料
- Python Pandas - 計數和檢索唯一元素
- Python Pandas - 重複標籤
- Python Pandas - 分組和聚合
- Python Pandas - GroupBy
- Python Pandas - 時間序列資料
- Python Pandas - 日期功能
- Python Pandas - 時間增量
- Python Pandas - 稀疏資料結構
- Python Pandas - 稀疏資料
- Python Pandas - 視覺化
- Python Pandas - 視覺化
- Python Pandas - 其他概念
- Python Pandas - 注意事項和陷阱
- Python Pandas 有用資源
- Python Pandas - 快速指南
- Python Pandas - 有用資源
- Python Pandas - 討論
Python Pandas - 聚合操作
資料聚合是資料分析中的一個關鍵步驟,尤其是在處理大型資料集時。在 Pandas 中,您可以使用 DataFrame.agg() 方法執行聚合操作。此方法非常靈活,可以執行各種操作來彙總和分析您的資料。Pandas 中的聚合操作可以應用於索引軸(預設)或列軸。
在本教程中,我們將討論如何使用 DataFrame.agg() 方法執行各種聚合技術,包括如何應用多個聚合函式、為特定列自定義聚合以及同時處理行和列。
瞭解 DataFrame.agg() 方法
DataFrame.agg() 方法(aggregate 的別名)是一個強大的工具,允許您將一個或多個聚合函式應用於 DataFrame,無論是跨行還是跨列,從而提供資料的摘要。
語法
以下是語法:
DataFrame.agg(func=None, axis=0, *args, **kwargs)
其中,
func:此引數指定要應用的聚合函式。它接受單個函式或函式名(例如,np.sum、'mean')、函式或函式名的列表,或者將軸標籤對映到函式的字典。
axis:指定應用聚合的軸。0 或 'index' 將函式應用於每一列(預設),而 1 或 'columns' 將函式應用於每一行。
*args:傳遞給聚合函式的位置引數。
**kwargs:傳遞給聚合函式的關鍵字引數。
agg() 方法的結果取決於輸入,如果使用單個函式,則返回標量或Series,如果應用多個函式,則返回DataFrame。
在 DataFrame 行上應用聚合
您可以使用 agg 函式在行(索引軸)上聚合多個函式。此方法將指定的聚合函式應用於 DataFrame 中的每一列。
示例
讓我們建立一個 DataFrame 並對其應用聚合函式sum和min。在本例中,sum 和 min 函式應用於每一列,提供資料的摘要。
import pandas as pd import numpy as np df = pd.DataFrame([[1, 2, 3, 1], [4, 5, 6, np.nan], [7, 8, 9, 2], [np.nan, 2, np.nan, 3]], index = pd.date_range('1/1/2024', periods=4), columns = ['A', 'B', 'C', 'D']) print("Input DataFrame:\n",df) result = df.agg(['sum', 'min']) print("\nResults:\n",result)
其輸出如下:
Input DataFrame: A B C D 2024-01-01 1.0 2 3.0 1.0 2024-01-02 4.0 5 6.0 NaN 2024-01-03 7.0 8 9.0 2.0 2024-01-04 NaN 2 NaN 3.0 Results: A B C D sum 12.0 17 18.0 6.0 min 1.0 2 3.0 1.0
為每一列應用不同的函式
您還可以透過將字典傳遞給 agg 函式,為不同的列應用不同的聚合函式。字典中的每個鍵對應一列,值是要應用的聚合函式列表。
import pandas as pd import numpy as np df = pd.DataFrame([[1, 2, 3, 1], [4, 5, 6, np.nan], [7, 8, 9, 2], [np.nan, 2, np.nan, 3]], index = pd.date_range('1/1/2024', periods=4), columns = ['A', 'B', 'C', 'D']) print("Input DataFrame:\n",df) result = df.agg({'A': ['sum', 'min'], 'B': ['min', 'max']}) print("\nResults:\n",result)
執行上述程式碼後,它會產生以下輸出:
Input DataFrame: A B C D 2024-01-01 1.0 2 3.0 1.0 2024-01-02 4.0 5 6.0 NaN 2024-01-03 7.0 8 9.0 2.0 2024-01-04 NaN 2 NaN 3.0 Results: A B sum 12.0 NaN min 1.0 2.0 max NaN 8.0
對單個列應用聚合
您可以將聚合函式應用於單個列,例如計算滾動總和。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(10, 4), index = pd.date_range('1/1/2000', periods=10), columns = ['A', 'B', 'C', 'D']) print(df) r = df.rolling(window=3,min_periods=1) print(r['A'].aggregate(np.sum))
其輸出如下:
A B C D 2000-01-01 1.088512 -0.650942 -2.547450 -0.566858 2000-01-02 1.879182 -1.038796 -3.215581 -0.299575 2000-01-03 1.303660 -2.003821 -3.155154 -2.479355 2000-01-04 1.884801 -0.141119 -0.862400 -0.483331 2000-01-05 1.194699 0.010551 0.297378 -1.216695 2000-01-06 1.925393 1.968551 -0.968183 1.284044 2000-01-07 0.565208 0.032738 -2.125934 0.482797 2000-01-08 0.564129 -0.759118 -2.454374 -0.325454 2000-01-09 2.048458 -1.820537 -0.535232 -1.212381 2000-01-10 2.065750 0.383357 1.541496 -3.201469 2000-01-01 1.088512 2000-01-02 1.879182 2000-01-03 1.303660 2000-01-04 1.884801 2000-01-05 1.194699 2000-01-06 1.925393 2000-01-07 0.565208 2000-01-08 0.564129 2000-01-09 2.048458 2000-01-10 2.065750 Freq: D, Name: A, dtype: float64
自定義結果
Pandas 允許您跨列聚合不同的函式並重命名結果 DataFrame 的索引。這可以透過將元組傳遞給agg() 函式來完成。
示例
以下示例使用自定義索引標籤應用聚合。
import pandas as pd import numpy as np df = pd.DataFrame([[1, 2, 3, 1], [4, 5, 6, np.nan], [7, 8, 9, 2], [np.nan, 2, np.nan, 3]], index = pd.date_range('1/1/2024', periods=4), columns = ['A', 'B', 'C', 'D']) print("Input DataFrame:\n",df) result = df.agg(x=('A', 'max'), y=('B', 'min'), z=('C', 'mean')) print("\nResults:\n",result)
其輸出如下:
Input DataFrame: A B C D 2024-01-01 1.0 2 3.0 1.0 2024-01-02 4.0 5 6.0 NaN 2024-01-03 7.0 8 9.0 2.0 2024-01-04 NaN 2 NaN 3.0 Results: A B C x 7.0 NaN NaN y NaN 2.0 NaN z NaN NaN 6.0
在列上應用聚合
除了在行上進行聚合外,您還可以透過將 axis 引數設定為列 (axis=1) 在列上進行聚合。當您想跨行應用聚合函式時,這很有用。
示例
此示例跨列為每一行應用mean()函式。
import pandas as pd import numpy as np df = pd.DataFrame([[1, 2, 3, 1], [4, 5, 6, np.nan], [7, 8, 9, 2], [np.nan, 2, np.nan, 3]], index = pd.date_range('1/1/2024', periods=4), columns = ['A', 'B', 'C', 'D']) print("Input DataFrame:\n",df) result = df.agg("mean", axis="columns") print("\nResults:\n",result)
其輸出如下:
Input DataFrame: A B C D 2024-01-01 1.0 2 3.0 1.0 2024-01-02 4.0 5 6.0 NaN 2024-01-03 7.0 8 9.0 2.0 2024-01-04 NaN 2 NaN 3.0 Results: 2024-01-01 1.75 2024-01-02 5.00 2024-01-03 6.50 2024-01-04 2.50 Freq: D, dtype: float64