pandas agg函式的詳細介紹與應用

charles19382293681發表於2024-07-10

pandas agg函式的詳細介紹與應用

參考:pandas agg

Pandas 是一個強大的 Python 資料處理庫,提供了廣泛的方法來進行資料分析。其中,agg 函式是一個非常有用的工具,它允許使用者對資料進行多種聚合操作,可以極大地簡化資料處理過程。本文將詳細介紹 agg 函式的使用方法,並透過多個示例展示其在實際資料處理中的應用。

1. agg函式簡介

agg 函式(也稱為聚合函式)是 pandas 中 DataFrame 和 Series 物件的一個方法,用於對資料集合進行一系列的聚合操作。這些操作可以是統計總結,如求和、平均值、最大值、最小值等。agg 函式的靈活性在於它可以接受多種輸入格式,如字串、函式或者函式列表,並且可以同時對資料應用多個聚合操作。

2. agg函式的基本用法

示例程式碼 1: 單個聚合操作

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
})

# 對列 A 應用 sum 聚合函式
result = df['A'].agg('sum')
print(result)

Output:

示例程式碼 2: 多個聚合操作

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
})

# 對列 A 應用多個聚合函式
result = df['A'].agg(['sum', 'mean'])
print(result)

Output:

示例程式碼 3: 對整個 DataFrame 應用聚合

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
})

# 對整個 DataFrame 應用 sum 聚合函式
result = df.agg('sum')
print(result)

Output:

示例程式碼 4: 對 DataFrame 應用多個聚合函式

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
})

# 對整個 DataFrame 應用多個聚合函式
result = df.agg(['sum', 'mean'])
print(result)

Output:

示例程式碼 5: 對不同列應用不同的聚合函式

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
})

# 對不同列應用不同的聚合函式
result = df.agg({'A': 'sum', 'B': 'mean'})
print(result)

Output:

3. 使用自定義函式進行聚合

示例程式碼 6: 使用自定義函式進行聚合

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
})

# 定義一個自定義聚合函式
def my_custom_function(x):
    return x.max() - x.min()

# 應用自定義聚合函式
result = df.agg(my_custom_function)
print(result)

Output:

示例程式碼 7: 對特定列使用自定義函式進行聚合

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
})

# 應用自定義聚合函式到特定列
result = df['A'].agg(my_custom_function)
print(result)

4. 在 groupby 操作中使用 agg

示例程式碼 8: 在 groupby 中使用單個聚合函式

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'Key': ['A', 'B', 'A', 'B', 'A', 'B'],
    'Value': [10, 20, 30, 40, 50, 60]
})

# 使用 groupby 和 agg
grouped = df.groupby('Key')
result = grouped.agg('sum')
print(result)

Output:

示例程式碼 9: 在 groupby 中使用多個聚合函式

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'Key': ['A', 'B', 'A', 'B', 'A', 'B'],
    'Value': [10, 20, 30, 40, 50, 60]
})

# 使用 groupby 和多個聚合函式
grouped = df.groupby('Key')
result = grouped.agg(['sum', 'mean'])
print(result)

Output:

示例程式碼 10: 在 groupby 中對不同列使用不同的聚合函式

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'Key': ['A', 'B', 'A', 'B', 'A', 'B'],
    'Value1': [10, 20, 30, 40, 50, 60],
    'Value2': [100, 200, 300, 400, 500, 600]
})

# 使用 groupby 和對不同列使用不同的聚合函式
grouped = df.groupby('Key')
result = grouped.agg({'Value1': 'sum', 'Value2': 'mean'})
print(result)

Output:

5. 結合使用 agg 和其他 pandas 功能

示例程式碼 11: 結合使用 agg 和 filter

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': [5, 4, 3, 2, 1]
})

# 使用 filter 和 agg
filtered = df[df['A'] > 2]
result = filtered.agg('sum')
print(result)

Output:

示例程式碼 12: 結合使用 agg 和 apply

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': [5, 4, 3, 2, 1]
})

# 使用 apply 和 agg
result = df.apply(lambda x: x * 2).agg('sum')
print(result)

Output:

示例程式碼 13: 結合使用 agg 和 sort_values

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'A': [5, 3, 1, 4, 2],
    'B': [1, 2, 3, 4, 5]
})

# 使用 agg 計算總和後排序
result = df.agg('sum').sort_values(ascending=False)
print(result)

Output:

示例程式碼 14: 使用 agg 進行條件聚合

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'A': [10, 20, 30, 40, 50],
    'B': [100, 200, 300, 400, 500]
})

# 定義條件聚合函式
def custom_agg(x):
    return x[x > 25].sum()

# 應用自定義聚合函式
result = df['A'].agg(custom_agg)
print(result)

Output:

示例程式碼 15: 使用 agg 和 rename 結合改變結果列名

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': [5, 4, 3, 2, 1]
})

# 使用 agg 計算總和並重新命名列
result = df.agg({'A': 'sum', 'B': 'sum'}).rename({'A': 'Total_A', 'B': 'Total_B'})
print(result)

Output:

示例程式碼 16: 使用 agg 結合 lambda 函式進行復雜聚合

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'A': [10, 20, 30, 40, 50],
    'B': [100, 200, 300, 400, 500]
})

# 使用 lambda 函式進行聚合
result = df.agg(lambda x: (x.max() - x.min()) / x.mean())
print(result)

Output:

示例程式碼 17: 在 groupby 後使用 agg 應用多個自定義函式

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'Key': ['A', 'B', 'A', 'B', 'A', 'B'],
    'Value': [10, 20, 30, 40, 50, 60]
})

# 定義多個自定義聚合函式
def range_func(x):
    return x.max() - x.min()

def average_func(x):
    return x.mean()

# 使用 groupby 和多個自定義聚合函式
grouped = df.groupby('Key')
result = grouped.agg([range_func, average_func])
print(result)

Output:

示例程式碼 18: 使用 agg 結合 numpy 函式

import pandas as pd
import numpy as np

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': [5, 4, 3, 2, 1]
})

# 使用 numpy 函式進行聚合
result = df.agg(np.sum)
print(result)

示例程式碼 19: 使用 agg 進行時間序列資料的聚合

import pandas as pd

# 建立一個時間序列示例 DataFrame
df = pd.DataFrame({
    'Date': pd.date_range(start='20230101', periods=5),
    'Value': [1, 2, 3, 4, 5]
})

# 設定日期為索引
df.set_index('Date', inplace=True)

# 使用 resample 和 agg 進行時間序列聚合
result = df.resample('M').agg('sum')
print(result)

示例程式碼 20: 結合使用 agg 和 pivot_table

import pandas as pd

# 建立一個示例 DataFrame
df = pd.DataFrame({
    'Category': ['A', 'A', 'B', 'B', 'C', 'C'],
    'Value': [10, 15, 10, 20, 30, 25]
})

# 使用 pivot_table 和 agg 進行資料透視和聚合
pivot_result = df.pivot_table(index='Category', values='Value', aggfunc='sum')
print(pivot_result)

Output:

透過這些示例,我們可以看到 agg 函式在處理各種資料聚合需求時的強大能力和靈活性。無論是簡單的總結統計還是複雜的自定義聚合,agg 函式都能提供有效的解決方案,幫助資料分析師在日常工作中更加高效地處理和分析資料。

參考連結:

  • QQDocs pandas agg
  • Yuque Pandas agg
  • Nowcoder pandas agg
  • Kdocs pandas agg
  • 51CTO pandas agg
  • Gitee pandas agg
  • Developer Weixin pandas agg
  • Leetcode Pandas agg

相關文章