Python group-by归约

  • Post category:Python

下面就是Python group-by归约的使用方法完整攻略:

什么是group-by归约?

在Python中,group-by是对数据进行分组操作的一种方法。也就是说,我们可以将一个数据集按照某一个属性进行分组,然后对每个不同的分组单独进行处理。

举个例子,假设我们有一个存储了学生成绩的数据集,其中包括每个学生的姓名、性别、年龄和成绩等信息。我们可以利用group-by将这个数据集按照性别进行分组,然后找出各个性别的平均成绩。

在Python中,group-by是通过pandas库来实现的。pandas是Python中主要用于数据处理的库,它包含了大量的数据处理和分析工具,其中就包括group-by。

group-by的基本用法

group-by的基本语法如下所示:

df.groupby(by=grouping_columns)[columns_to_show].function()

其中,参数含义如下:

  • df:表示需要进行分组的数据集;
  • by:表示按照哪一列或哪几列进行分组,它可以是列名称或列名称的列表;
  • columns_to_show:表示需要展示哪些列的数据,它可以是列名称或列名称的列表;
  • function:表示需要对每个分组进行的操作,它可以是预定义函数或自定义函数。

下面我们通过几个示例来详细讲解group-by的使用方法。

示例一:按照性别进行分组

我们继续以前面的学生成绩数据集为例,假设数据已经导入到一个名为“df”的数据框中,现在我们要按照学生的性别将数据进行分组,并找出各个性别的平均成绩。

import pandas as pd

# 构建数据集
data = {'name': ['Tom', 'Jack', 'Amy', 'Jessie', 'Lucy', 'Tom', 'Jack', 'Amy', 'Jessie', 'Lucy'],
        'gender': ['M', 'M', 'F', 'F', 'F', 'M', 'M', 'F', 'F', 'F'],
        'age': [20, 19, 21, 20, 18, 20, 19, 21, 20, 18],
        'score': [80, 75, 90, 85, 78, 82, 77, 93, 88, 80]}
df = pd.DataFrame(data)

# 按照性别进行分组,并计算每个分组的平均成绩
grouped = df.groupby('gender')['score'].mean()
print(grouped)

运行上述代码后,我们会得到以下输出结果:

gender
F    84.8
M    78.0
Name: score, dtype: float64

即我们成功按照性别将数据进行了分组,并找出了各个性别的平均成绩。

示例二:按照多列进行分组

有时候,我们需要按照多列进行分组。以前面的数据集为例,我们可以按照性别和年龄两列进行分组,找出每个组中的最高分数。

import pandas as pd

# 构建数据集
data = {'name': ['Tom', 'Jack', 'Amy', 'Jessie', 'Lucy', 'Tom', 'Jack', 'Amy', 'Jessie', 'Lucy'],
        'gender': ['M', 'M', 'F', 'F', 'F', 'M', 'M', 'F', 'F', 'F'],
        'age': [20, 19, 21, 20, 18, 20, 19, 21, 20, 18],
        'score': [80, 75, 90, 85, 78, 82, 77, 93, 88, 80]}
df = pd.DataFrame(data)

# 按照性别和年龄两列进行分组,并找出每个组中的最高分数
grouped = df.groupby(['gender', 'age'])['score'].max()
print(grouped)

运行上述代码后,我们会得到以下输出结果:

gender  age
F       18     78
        20     85
        21     93
M       19     75
        20     82
Name: score, dtype: int64

即我们成功按照性别和年龄两列将数据进行了分组,并找出了每个组中的最高分数。

总结

到这里,我们已经掌握了group-by在Python中的基本用法,它在实际的数据处理和分析中非常常见。通过group-by,我们可以按照任意列或列的组合将数据进行分组,并可以对每个分组单独进行操作。