主页 > 知识库 > Pandas中的 transform()结合 groupby()用法示例详解

Pandas中的 transform()结合 groupby()用法示例详解

热门标签:哈尔滨外呼系统代理商 南昌办理400电话怎么安装 湛江电销防封卡 徐州天音防封电销卡 不错的400电话办理 佛山防封外呼系统收费 电话机器人适用业务 获客智能电销机器人 郑州智能外呼系统运营商

首先,假设我们有如下餐厅数据集:

import pandas as pd

df = pd.DataFrame({
  'restaurant_id': [101,102,103,104,105,106,107],
  'address': ['A','B','C','D', 'E', 'F', 'G'],
  'city': ['London','London','London','Oxford','Oxford', 'Durham', 'Durham'],
  'sales': [10,500,48,12,21,22,14]
})

如果我们想知道:每个餐厅在城市中所占的销售额百分比是多少?预期得到的输出是:

相比于原来的数据集,多了两列,分别是某个城市所有餐厅的销售总额,以及每个餐厅在城市中所占的销售额百分比。解决方案有两个:

方案一(较麻烦):

1、使用 groupby('city') 基于城市进行分组,对于这些组中的每一个组,选中其销售额列 ['sales'],然后使用函数 apply(sum) 或者sum() 对城市的销售额进行求和。

之后,新列被重命名为 city_total_sales 并且索引被重置(注意不能漏了 reset_index() ,因为 groupby('city') 生成的索引是城市,而我们希望城市作为普通列)。

city_sales = df.groupby('city')['sales']
             .sum().rename('city_total_sales').reset_index()

得到的 city_sales 如下:

2、用 merge() 函数把 city_sales 合并回去,得到的 df_new 如下:

df_new = pd.merge(df, city_sales, how='left')


3、最后,求百分比并保留两位小数,结果如下:

df_new['pct'] = df_new['sales'] / df_new['city_total_sales']
df_new['pct'] = df_new['pct'].apply(lambda x: format(x, '.2%'))

方案二(便捷):

1
transform() 函数在执行转换后保留与原始数据集相同数量的项目。因此,使用 groupby() 然后使用 transform(sum) 会返回相同的输出,结果如下图:

df['city_total_sales'] = df.groupby('city')['sales']
                           .transform('sum')

代码翻译过来就是:数据集基于城市进行分组,然后选定销售额列,对每组的销售额进行求和,返回一个和原列长度一样的新列

2

与方案一相同。

df['pct'] = df['sales'] / df['city_total_sales']
df['pct'] = df['pct'].apply(lambda x: format(x, '.2%'))

总结:可以看出,在对 DataFrame 进行分组 groupby() 之后,如果是使用 apply() 或者直接使用某个统计函数,得到的新列的长度与分组得到的组数是一样的;而如果使用 transform()得到的新列与 DataFrame 中列的长度是一样的

到此这篇关于Pandas中的 transform()结合 groupby()用法示例详解的文章就介绍到这了,更多相关Pandas groupby() 用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • pandas数据分组groupby()和统计函数agg()的使用
  • pandas之分组groupby()的使用整理与总结
  • 分享Pandas库中的一些宝藏函数transform()

标签:芜湖 安康 吉安 怀化 广西 吕梁 绍兴 兰州

巨人网络通讯声明:本文标题《Pandas中的 transform()结合 groupby()用法示例详解》,本文关键词  Pandas,中的,transform,结合,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《Pandas中的 transform()结合 groupby()用法示例详解》相关的同类信息!
  • 本页收集关于Pandas中的 transform()结合 groupby()用法示例详解的相关信息资讯供网民参考!
  • 推荐文章