探究Python中Groupby的用法
介绍:Python中的Groupby函数可以将数据按照相同的键值分组,通过这种方式可以对数据进行分析、计算等处理。接下来,我们将深入探究Groupby的用法。
Groupby函数的基本用法
一、语法格式:
groupby(self, by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)
二、参数说明:
1. by:function, str, list or dict。用于确定分组的键(即按照哪些列或哪些条件进行分组)的列表、数组或Series。例如,如果这是字典,则字典值被解释为按照字典值的键进行分组,并按照字典键作为组名称;
2. axis:int,默认为0,按行分组(1为列分组);
3. level:int or level name,沿特定轴的级别分组;
4. as_index:boolean,表示分组键是否作为索引,默认为True。
5. sort:boolean,是否对分组结果进行排序,默认为True;
6. group_keys:boolean,表示是否在结果中包含组名(默认为True),如果为False,则只返回一个分组列表。
Groupby函数的应用举例
例1:按照一个列进行分组
首先我们需要导入pandas库,并创建一个包含不同汽车名称、颜色、成交额等信息的数据集:
import pandas as pd
data = {
'Car':['BMW','BMW','Audi','Audi','BMW','Honda','Honda','Honda','BMW'],
'Color':['White','Black','Black','White','White','White','Black','White','Black'],
'Amount':[100,150,125,85,159,120,110,95,135]
}
df = pd.DataFrame(data)
print(df)
输出如下:
Car Color Amount
0 BMW White 100
1 BMW Black 150
2 Audi Black 125
3 Audi White 85
4 BMW White 159
5 Honda White 120
6 Honda Black 110
7 Honda White 95
8 BMW Black 135
接下来,我们可以按照汽车名称“Car”来进行分组,并计算每组的成交额均值:
cars = df.groupby(['Car']).mean()
print(cars)
输出结果为:
Amount
Car
Audi 105.0
BMW 136.0
Honda 108.333333
例2:按照多列进行分组
现在我们来按照汽车名称“Car”和颜色“Color”两列来进行分组,计算每组的平均成交额:
cars = df.groupby(['Car','Color']).mean()
print(cars)
输出结果为:
Amount
Car Color
Audi Black 125.0
White 85.0
BMW Black 142.5
White 129.5
Honda Black 110.0
White 107.5
Groupby函数的进阶用法
例3:对分组后结果进行筛选操作
Groupby函数还支持对分组后的结果进行筛选操作,例如下面的例子:筛选出每组成交额最高的记录。
result = df.sort_values(['Amount'], ascending=[False]).groupby('Car').head(1)
print(result)
输出结果为:
Car Color Amount
4 BMW White 159
2 Audi Black 125
5 Honda White 120
例4:自定义函数进行分组计算
Groupby函数可以结合apply方法,使用自定义函数进行计算。例如下面的例子:计算每组成交额与该组成交额的平均值之间的差值。
def diff(group):
return group - group.mean()
result = df.groupby('Car')['Amount'].apply(diff)
print(result)
输出结果为:
0 -36.0
1 13.0
2 20.0
3 -20.0
4 22.5
5 11.667
6 1.667
7 -13.333
8 -1.5
Name: Amount, dtype: float64
总结
通过以上介绍,我们可以发现Groupby函数在数据分析中具有非常重要的作用。通过灵活运用Groupby函数,我们可以对数据进行加工、分析、计算等处理,帮助我们更好地理解数据并做出正确的决策。