返回
多样妙用进阶 Pandas中灵活运用groupby()函数大法
开发工具
2023-10-07 15:54:45
在数据分析中,分组统计是必不可少的技能。Python中的Pandas库提供了groupby()函数,可以非常方便地实现分组统计。掌握groupby()函数的使用技巧,可以极大地提高数据分析的效率。
groupby()函数的基本用法
groupby()函数的基本用法是根据某个或多个列对数据进行分组,然后对每个组的数据进行统计。
import pandas as pd
df = pd.DataFrame({'name': ['John', 'Mary', 'Bob', 'Alice', 'John', 'Mary'],
'city': ['New York', 'London', 'Paris', 'Berlin', 'New York', 'London'],
'age': [20, 25, 30, 22, 28, 26]})
df.groupby('name').size()
以上代码将数据框df根据name列进行分组,并统计每个组的个数。
结果如下:
name
Alice 1
Bob 1
John 2
Mary 2
groupby()函数的灵活运用
groupby()函数除了可以统计个数之外,还可以进行其他统计,比如求和、求平均值、求最大值、求最小值等。
df.groupby('city').sum()
以上代码将数据框df根据city列进行分组,并对每个组的age列求和。
结果如下:
age
city
Berlin 30
London 51
New York 48
Paris 22
分组统计与条件过滤相结合
groupby()函数还可以与条件过滤相结合,实现更加灵活的分组统计。
df[(df['age'] > 25) & (df['city'] == 'London')].groupby('name').sum()
以上代码将数据框df先根据age列过滤,只保留age大于25的数据,然后根据city列过滤,只保留city等于London的数据,最后根据name列进行分组,并对每个组的age列求和。
结果如下:
age
name
Mary 26
groupby()函数与数值计算相结合
groupby()函数还可以与数值计算相结合,实现更加复杂的分组统计。
df.groupby('city')['age'].apply(lambda x: x.mean())
以上代码将数据框df根据city列进行分组,然后对每个组的age列求平均值。
结果如下:
city
Berlin 30.0
London 25.5
New York 26.0
Paris 22.0
groupby()函数与排序相结合
groupby()函数还可以与排序相结合,实现更加灵活的分组统计。
df.groupby('city')['age'].sort_values(ascending=False)
以上代码将数据框df根据city列进行分组,然后对每个组的age列进行降序排序。
结果如下:
city age
Berlin 30
New York 28
London 26
London 25
Paris 22
groupby()函数在数据分析中的妙用举例
- 各个商品的购买量
df.groupby('product_id')['quantity'].sum()
- 各个商品的浏览量
df.groupby('product_id')['views'].sum()
- 各个商品的转化率
df.groupby('product_id')['orders'] / df.groupby('product_id')['views']
- 转化率最高的30个商品及其转化率
df.groupby('product_id')['orders'] / df.groupby('product_id')['views']\
.sort_values(ascending=False).head(30)
结束语
groupby()函数是Pandas库中一个非常强大的分组函数,掌握groupby()函数的使用技巧,可以极大地提高数据分析的效率。