Pandas中对多列使用agg函数的详细指南

Pandas中对多列使用agg函数的详细指南

参考:pandas agg multiple columns

Pandas是Python的一个强大的数据处理库,它提供了大量的功能来方便数据分析师进行数据处理、清洗、分析等工作。在数据分析中,经常需要对数据集中的多个列进行聚合操作,以提取有用的统计信息。本文将详细介绍如何在Pandas中使用agg函数对多列进行聚合操作,并提供多个示例代码以帮助理解和实践。

1. Pandas agg 函数简介

在Pandas中,agg是一个非常有用的函数,它允许用户对DataFrame的列应用一个或多个操作。这些操作可以是统计总结,也可以是更复杂的自定义函数。使用agg函数可以在单个表达式中处理多个聚合操作,极大地提高了代码的简洁性和执行效率。

2. 对单列使用agg函数

在介绍多列聚合之前,我们先简单回顾一下如何对单列使用agg函数。

示例代码 1: 单列聚合

import pandas as pd

# 创建示例DataFrame
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)

# 对列A进行聚合
result = df['A'].agg(['sum', 'mean'])
print(result)

Output:

Pandas中对多列使用agg函数的详细指南

3. 对多列使用agg函数

当需要同时对多个列进行聚合操作时,agg函数显得尤为有用。你可以指定一个字典,其中的键是DataFrame中的列名,值是需要应用的函数列表。

示例代码 2: 多列聚合

import pandas as pd

# 创建示例DataFrame
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)

# 对列A和B同时进行聚合
result = df.agg({
    'A': ['sum', 'min'],
    'B': ['max', 'mean']
})
print(result)

Output:

Pandas中对多列使用agg函数的详细指南

4. 使用自定义函数进行聚合

Pandas的agg函数也支持使用自定义函数进行聚合,这为数据分析提供了极大的灵活性。

示例代码 3: 使用自定义函数聚合

import pandas as pd

# 创建示例DataFrame
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)

# 定义一个自定义聚合函数
def my_custom_function(x):
    return x.max() - x.min()

# 使用自定义函数进行聚合
result = df.agg({
    'A': my_custom_function,
    'B': my_custom_function
})
print(result)

Output:

Pandas中对多列使用agg函数的详细指南

5. 对所有列应用相同的聚合函数

有时候,我们可能需要对DataFrame中的所有数值列应用相同的聚合函数。这可以通过简单地将函数名称作为字符串传递给agg函数来实现。

示例代码 4: 对所有列应用相同的聚合函数

import pandas as pd

# 创建示例DataFrame
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)

# 对所有数值列应用相同的聚合函数
result = df.agg('sum')
print(result)

Output:

Pandas中对多列使用agg函数的详细指南

6. 聚合多个列并返回多级列

在使用agg函数进行多列聚合时,如果对同一列应用了多个聚合函数,Pandas会自动创建多级列。这使得结果的组织更为清晰,也方便后续的数据处理。

示例代码 5: 聚合多个列并返回多级列

import pandas as pd

# 创建示例DataFrame
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)

# 对列A和B进行多个聚合操作
result = df.agg({
    'A': ['sum', 'mean', 'max'],
    'B': ['sum', 'mean', 'min']
})
print(result)

Output:

Pandas中对多列使用agg函数的详细指南

7. 使用agg进行条件聚合

有时候,我们需要根据某些条件对列进行聚合。这可以通过在自定义函数中添加条件语句来实现。

示例代码 6: 使用agg进行条件聚合

import pandas as pd

# 创建示例DataFrame
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)

# 定义一个条件聚合函数
def conditional_agg(x):
    return x[x > 2].sum()

# 使用条件聚合函数
result = df.agg({
    'A': conditional_agg,
    'B': conditional_agg
})
print(result)

Output:

Pandas中对多列使用agg函数的详细指南

8. 结合groupbyagg使用

在Pandas中,groupbyagg经常一起使用,以对数据进行分组后再聚合。这是数据分析中常见的一个操作,用于分析不同组内的数据统计特征。

示例代码 7: 结合groupbyagg使用

import pandas as pd

# 创建示例DataFrame
data = {
    'Group': ['G1', 'G1', 'G2', 'G2'],
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)

# 使用groupby和agg
result = df.groupby('Group').agg({
    'A': ['sum', 'mean'],
    'B': ['max', 'min']
})
print(result)

Output:

Pandas中对多列使用agg函数的详细指南

9. 更多示例代码

为了进一步加深理解,以下提供更多关于使用agg函数的示例代码。

示例代码 8: 对指定列应用多个不同的聚合函数

import pandas as pd

# 创建示例DataFrame
data = {
    'A': [10, 20, 30, 40],
    'B': [50, 60, 70, 80],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)

# 对列A应用sum和mean,对列B应用max和min
result = df.agg({
    'A': ['sum', 'mean'],
    'B': ['max', 'min']
})
print(result)

Output:

Pandas中对多列使用agg函数的详细指南

示例代码 9: 使用lambda函数进行聚合

import pandas as pd

# 创建示例DataFrame
data = {
    'A': [100, 200, 300, 400],
    'B': [500, 600, 700, 800],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)

# 使用lambda函数对列A进行聚合
result = df['A'].agg(lambda x: x.max() - x.min())
print(result)

Output:

Pandas中对多列使用agg函数的详细指南

示例代码 10: 对DataFrame的所有数值列应用多个聚合函数

import pandas as pd

# 创建示例DataFrame
data = {
    'A': [1000, 2000, 3000, 4000],
    'B': [5000, 6000, 7000, 8000],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)

# 对所有数值列应用sum和mean聚合函数
result = df.agg(['sum', 'mean'])
print(result)

示例代码 11: 结合条件过滤和聚合

import pandas as pd

# 创建示例DataFrame
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)

# 对列A进行条件过滤后聚合
result = df[df['A'] > 2].agg({
    'A': ['sum', 'mean'],
    'B': ['max', 'min']
})
print(result)

Output:

Pandas中对多列使用agg函数的详细指南

示例代码 12: 使用自定义函数对多个列进行不同的聚合操作

import pandas as pd

# 创建示例DataFrame
data = {
    'A': [10, 20, 30, 40],
    'B': [50, 60, 70, 80],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
}
df = pd.DataFrame(data)

# 定义自定义聚合函数
def range_func(x):
    return x.max() - x.min()

# 对列A和B使用不同的聚合函数
result = df.agg({
    'A': range_func,
    'B': 'mean'
})
print(result)

Output:

Pandas中对多列使用agg函数的详细指南

通过这些示例,我们可以看到Pandas的agg函数不仅支持内置的聚合函数,如summean等,还可以通过自定义函数或lambda表达式来实现更复杂的聚合逻辑。这些功能使得Pandas在数据处理和分析中非常灵活和强大。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程