欢迎来到我的个人博客,有Python技术,自媒体,创业,APP开发问题随时讨论交流

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

Python sitin 6个月前 (01-23) 126次浏览 已收录 0个评论
Python Pandas中的数据聚合神器:agg 方法

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': [2530354045],
    'Salary': [5000060000750008000090000]
}

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': [6000070000750005500080000]
}

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': [2530354045],
    'Salary': [5000060000750008000090000],
    '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 方法进行数据聚合有所帮助。通过掌握这个功能,将能够更轻松地分析和摘要数据,从而更好地理解和解释数据集。

喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址