首页 > Python资料 博客日记
Python Pandas中的数据聚合神器:agg 方法
2024-05-31 17:00:05Python资料围观151次
更多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)
处理不同类型的列
要处理不同类型的列,可以为不同的列指定不同的聚合函数。例如,对于字符串列(例如 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。
往期推荐
学习 数据结构与算法,这是我见过最友好的教程!(PDF免费下载)
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程