Python Pandas中的数据聚合神器:agg 方法
CSDN 2024-07-14 16:05:02 阅读 55
更多Python学习内容:ipengtao.com
Pandas 是 Python 中用于数据处理和分析的强大库,它提供了各种功能来处理和转换数据。在 Pandas 中,有时需要对数据进行聚合操作,以便分析和摘要数据。<code>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)
处理不同类型的列
要处理不同类型的列,可以为不同的列指定不同的聚合函数。例如,对于字符串列(例如 Name
和 City
),可以使用 nunique
函数来计算唯一值的数量,对于数值列(例如 Age
和 Salary
),可以计算均值和总和:
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问题咨询,或者考虑做一些工作以外的副业,都可以扫描二维码添加微信,围观朋友圈一起交流学习。
偷偷告诉大家一句:加了好友之后,备注 优质资料 可以额外免费获取一份价值 99 的《Python学习优质资料》,帮助你更好的学习Python。
往期推荐
Python基础学习常见的100个问题.pdf(附答案)
100个爬虫常见问题,完全版PDF开放下载!
学习 数据结构与算法,这是我见过最友好的教程!(PDF免费下载)
Python办公自动化完全指南(免费PDF)
Python Web 开发常见的100个问题.PDF
历时一个月整理的 Python 爬虫学习手册全集PDF(免费开放下载)
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。