Python Pandas中的数据聚合神器:agg 方法

9d530a02a0db04450ae68eddde412928.jpeg

更多Python学习内容:ipengtao.com

Pandas 是 Python 中用于数据处理和分析的强大库,它提供了各种功能来处理和转换数据。在 Pandas 中,有时需要对数据进行聚合操作,以便分析和摘要数据。agg 方法是 Pandas 中的一个强大工具,可以帮助进行各种数据聚合操作。本文将详细介绍 Pandas 中的 agg 方法,包括如何使用它以及如何处理不同类型的数据聚合。

什么是数据聚合?

在数据分析和处理中,数据聚合是将多个数据合并、计算或摘要为单个结果的过程。这个结果通常包括统计信息,如平均值、总和、最大值、最小值等,以便更好地理解和分析数据。Pandas 提供了多种数据聚合方法,其中之一就是 agg 方法。

Pandas 中的 agg 方法

agg 是 Pandas 中的一个方法,用于在数据帧(DataFrame)或系列(Series)上执行多个聚合操作。它可以接受一个或多个聚合函数,并将它们应用于指定的列或索引,生成一个包含聚合结果的新数据帧或系列。

agg 方法的一般语法如下:

DataFrame.agg(func, axis=0, *args, **kwargs)

其中:

  • func:一个或多个聚合函数,可以是函数、字符串或函数列表。

  • axis:指定应用聚合函数的轴,0 表示列,1 表示行。默认值是 0

  • *args**kwargs:可选参数,用于传递给聚合函数的额外参数。

基本的数据聚合

首先,看看如何使用 agg 方法执行一些基本的数据聚合操作。

将使用一个示例数据帧来演示这些操作:

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Ella'],
    'Age': [25, 30, 35, 40, 45],
    'Salary': [50000, 60000, 75000, 80000, 90000]
}

df = pd.DataFrame(data)

计算均值

要计算某一列的均值,可以使用 agg 方法并传递 'mean' 作为聚合函数:

mean_salary = df['Salary'].agg('mean')
print(mean_salary)

这将输出 69000.0,即薪水列的均值。

计算多个聚合值

还可以使用 agg 方法一次计算多个聚合值,例如均值、总和和最大值:

aggregations = {
    'Age': 'mean',
    'Salary': ['sum', 'max']
}

result = df.agg(aggregations)
print(result)

这将输出以下结果:

Age       35.0
Salary    365000.0
dtype: float64

这个结果是一个包含多个聚合值的 Pandas 系列。

使用自定义聚合函数

除了内置的聚合函数,还可以使用自定义函数来进行数据聚合。

例如,可以编写一个函数来计算薪水列中高于某个阈值的人数:

def count_above_threshold(salary_series, threshold):
    return (salary_series > threshold).sum()

above_70000 = df['Salary'].agg(count_above_threshold, threshold=70000)
print(above_70000)

这将输出 2,即薪水高于 70000 的人数。

分组数据聚合

agg 方法也可以与 groupby 方法一起使用,以便在分组数据上执行聚合操作。

首先,创建一个包含更多数据的数据帧:

data = {
    'Department': ['HR', 'Engineering', 'Engineering', 'HR', 'Finance'],
    'Salary': [60000, 70000, 75000, 55000, 80000]
}

df = pd.DataFrame(data)

按部门计算平均薪水

要按部门计算平均薪水,可以使用 groupby 方法分组数据,然后使用 agg 方法计算平均值:

average_salary_by_department = df.groupby('Department').agg({'Salary': 'mean'})
print(average_salary_by_department)

这将输出以下结果:

Salary
Department            
Engineering     72500.0
Finance         80000.0
HR              57500.0

同时计算多个聚合值

还可以同时计算多个聚合值,例如平均薪水和最高薪水:

aggregations = {
    'Salary': ['mean', 'max']
}

result = df.groupby('Department').agg(aggregations)
print(result)

这将输出以下结果:

Salary       
                  mean    max
Department                    
Engineering     72500  75000
Finance         80000  80000
HR              57500  60000

使用自定义聚合函数

可以编写自定义的聚合函数,然后将其应用到分组数据上。

例如,可以编写一个函数来计算每个部门的薪水中位数:

def median_salary(salary_series):
    return salary_series.median()

median_salary_by_department = df.groupby('Department')['Salary'].agg(median_salary)


print(median_salary_by_department)

这将输出以下结果:

Department
Engineering    72500.0
Finance        80000.0
HR             57500.0
Name: Salary, dtype: float64

处理多个列

agg 方法也可以处理多个列,同时应用多个聚合函数。例如,可以同时计算年龄和薪水的均值和总和:

aggregations = {
    'Age': ['mean', 'sum'],
    'Salary': ['mean', 'sum']
}

result = df.groupby('Department').agg(aggregations)
print(result)

这将输出以下结果:

Age        Salary       
                mean sum     mean    sum
Department                              
Engineering      32.5  65  72500.0  145000
Finance          45.0  45  80000.0   80000
HR               40.0  80  57500.0  115000

处理不同类型的数据聚合

有时,可能需要在同一个数据帧中应用不同类型的聚合函数,这取决于不同列的数据类型。例如,对于字符串列,可能希望计算唯一值的数量,而对于数值列,可能想要计算均值和总和。

下面是一个包含不同数据类型的示例数据帧:

data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Ella'],
    'Age': [25, 30, 35, 40, 45],
    'Salary': [50000, 60000, 75000, 80000, 90000],
    'City': ['New York', 'San Francisco', 'New York', 'Los Angeles', 'Chicago']
}

df = pd.DataFrame(data)

处理不同类型的列

要处理不同类型的列,可以为不同的列指定不同的聚合函数。例如,对于字符串列(例如 NameCity),可以使用 nunique 函数来计算唯一值的数量,对于数值列(例如 AgeSalary),可以计算均值和总和:

aggregations = {
    'Name': 'nunique',
    'Age': ['mean', 'sum'],
    'Salary': ['mean', 'sum'],
    'City': 'nunique'
}

result = df.agg(aggregations)
print(result)

这将输出以下结果:

Name     5
Age     35
Salary  69000
City     4
dtype: int64

在这个示例中,为不同类型的列选择了不同的聚合函数,从而获得了不同类型的聚合结果。

总结

Pandas 中的 agg 方法是一个强大的工具,用于执行各种数据聚合操作。可以使用内置的聚合函数,也可以编写自定义的聚合函数,以满足不同的数据分析需求。通过结合 agg 方法和 groupby 方法,可以在分组数据上执行复杂的聚合操作。

希望本文对大家在 Pandas 中使用 agg 方法进行数据聚合有所帮助。通过掌握这个功能,将能够更轻松地分析和摘要数据,从而更好地理解和解释数据集。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

如果想要系统学习Python、Python问题咨询,或者考虑做一些工作以外的副业,都可以扫描二维码添加微信,围观朋友圈一起交流学习。

31beee325d5a9ee2be656797ae232abb.gif

偷偷告诉大家一句:加了好友之后,备注 优质资料 可以额外免费获取一份价值 99 的《Python学习优质资料》,帮助你更好的学习Python。

b865eb13a6011220148f8516c65b2e1a.png

往期推荐

Python基础学习常见的100个问题.pdf(附答案)

100个爬虫常见问题,完全版PDF开放下载!

学习 数据结构与算法,这是我见过最友好的教程!(PDF免费下载)

Python办公自动化完全指南(免费PDF)

Python Web 开发常见的100个问题.PDF

历时一个月整理的 Python 爬虫学习手册全集PDF(免费开放下载)

  • 29
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值