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”列进行分组,最终得到每个发行商的销售额总和。