返回

多样妙用进阶 Pandas中灵活运用groupby()函数大法

开发工具

在数据分析中,分组统计是必不可少的技能。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()函数的使用技巧,可以极大地提高数据分析的效率。