用Pandas进行分组和聚合
在这篇文章中,我们将看到使用pandas进行分组和聚合。分组和聚合将有助于使用各种函数轻松实现数据分析。这些方法将帮助我们对数据进行分组和汇总,使复杂的分析变得相对容易。
创建一个各科分数的样本数据集。
# import module
import pandas as pd
# Creating our dataset
df = pd.DataFrame([[9, 4, 8, 9],
[8, 10, 7, 6],
[7, 6, 8, 5]],
columns=['Maths', 'English',
'Science', 'History'])
# display dataset
print(df)
输出:
Pandas中的聚合
pandas中的聚合提供了各种函数,对我们的数据集进行数学或逻辑运算,并返回该函数的摘要。聚合可以用来获取数据集中各列的摘要,比如从数据集的某一列获取总和、最小值、最大值等。用于聚合的函数是agg(),参数是我们要执行的函数。
汇总中使用的一些函数是:。
函数描述:
- sum() :计算列值的总和
- min() :计算列值的最小值
- max() :计算列值的最大值
- mean() :计算列的平均数
- size() :计算列的大小
- describe() :产生描述性的统计数据
- first() :计算组中的第一个值
- last() :计算组内的最后一个值
- count() :计算列值的数量
- std() :列的标准偏差
- var() :计算列的方差
- sem() :列的平均数的标准误差
示例:
- sum()函数用于计算每个值的总和。
df.sum()
输出:
- describe()函数被用来获取我们的数据集的摘要
df.describe()
输出:
- 我们使用agg()函数来计算数据集中每一列的总和、最小和最大。
df.agg(['sum', 'min', 'max'])
输出:
Pandas中的分组
分组是用来使用我们的数据集的一些标准对数据进行分组。它被用作分割-应用-合并的策略。
- 根据一些标准将数据分成几组。
- 将一个函数独立应用于每一组。
- 将结果合并为一个数据结构。
示例s:
我们使用groupby()函数将数据按 “Maths “值分组。它返回对象作为结果。
df.groupby(by=['Maths'])
输出:
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000012581821388>
应用groupby()函数将数据按 “Maths “值分组。使用first()函数查看形成的组的结果。
a = df.groupby('Maths')
a.first()
输出:
首先根据 “数学 “进行分组,在每个小组内,我们根据 “科学 “进行分组。
b = df.groupby(['Maths', 'Science'])
b.first()
输出:
在一个数据集上的实现
这里我们使用的是钻石信息的数据集。
# import module
import numpy as np
import pandas as pd
# reading csv file
dataset = pd.read_csv("diamonds.csv")
# printing first 5 rows
print(dataset.head(5))
输出:
- 我们通过使用cut进行分组,并得到所有列的总和。
dataset.groupby('cut').sum()
输出:
- 在这里,我们使用切割和颜色进行分组,并获得所有其他组的最小值。
dataset.groupby(['cut', 'color']).agg('min')
输出:
- 在这里,我们使用颜色进行分组,并获得价格组的总和、平均值、最小值等汇总值。
# dictionary having key as group name of price and
# value as list of aggregation function
# we want to perform on group price
agg_functions = {
'price':
['sum', 'mean', 'median', 'min', 'max', 'prod']
}
dataset.groupby(['color']).agg(agg_functions)
输出:
我们可以看到,在prod(积即乘法)一栏中,所有的数值都是inf,inf是数学上无限的数字计算结果。