详解pandas.DataFrame.groupby()(按列分组)函数使用方法

  • Post category:Python

pandas.DataFrame.groupby()是一个非常有用的函数,它可以使我们方便地将一个大的DataFrame分组为几个小的DataFrame,然后对每个小的DataFrame进行计算。

作用

pandas.DataFrame.groupby()的作用是根据指定的列将DataFrame进行分组,然后对每个分组进行计算,返回一个新的DataFrame,其中包含每个分组的计算结果。常用的计算操作包括求和、求平均值、计数等。

使用方法

下面介绍pandas.DataFrame.groupby()的使用方法:

1. 对DataFrame进行分组

可以使用groupby()函数对DataFrame进行分组,可以根据单个列或多个列进行分组。例如,下面的代码根据“class”列对DataFrame进行了分组:

import pandas as pd

df = pd.read_csv('data.csv')
grouped = df.groupby('class')

2. 对每个分组进行计算

可以使用聚合函数对每个分组进行计算。可以使用sum()、mean()、count()等函数进行计算。例如,下面的代码计算了每个班级的平均分:

import pandas as pd

df = pd.read_csv('data.csv')
grouped = df.groupby('class')
result = grouped.mean()

3. 对多个列进行分组和计算

可以同时根据多个列进行分组和计算。例如,下面的代码根据“class”和“name”列对DataFrame进行分组,并计算每个学生的总分:

import pandas as pd

df = pd.read_csv('data.csv')
grouped = df.groupby(['class', 'name'])
result = grouped.sum()

4. 对不同列进行不同的计算

可以使用agg()函数对不同列进行不同的计算。例如,下面的代码计算每个班级的平均分和总分:

import pandas as pd

df = pd.read_csv('data.csv')
grouped = df.groupby('class').agg({'score': ['mean', 'sum']})

实例

下面提供两个实例进行介绍:

实例1

假设我们有一个学生的成绩表格,包含学生的姓名、年级和科目成绩,我们想要按年级和科目对学生成绩进行平均分计算。可以使用下面的代码实现:

import pandas as pd

df = pd.read_csv('scores.csv')
grouped = df.groupby(['grade', 'subject']).mean()

在这个例子中,我们首先读取了一个CSV文件,然后使用groupby()函数将其按照“grade”和“subject”两列进行分组,最终得到每个分组的平均值。

实例2

假设我们有一个视频游戏销售数据表格,包含游戏名、发行商、销售额等信息,我们想要按发行商对游戏销售额进行汇总计算,并且只计算销售额大于100万的游戏。可以使用下面的代码实现:

import pandas as pd

df = pd.read_csv('sales.csv')
grouped = df[df['sales'] > 100].groupby('publisher').sum()

在这个例子中,我们首先使用df[‘sales’] > 100筛选出只有销售额大于100万的游戏,然后再按照“publisher”列进行分组,最终得到每个发行商的销售额总和。