首页 > 解决方案 > 求和转化率,然后按年龄分组

问题描述

我需要按年龄对转化率进行汇总和分组。下面的代码来自 Yoon Hyup Hwang 的《Hands-on Data Science for Marketing》一书。

这本书提供了以下代码,但它不起作用:

conversions_by_age = df.groupby(by='age')
['conversion'].sum() / df.groupby(by='age')
['conversion'].count() * 100

预期的输出将显示:

年龄栏:17 转化栏:40.0000 年龄栏:18 转化栏:42.857143

等等。

这是我从书中运行代码时收到的错误(第 2 行是每个 python 的问题):

  1 conversions_by_age = df.groupby(by='age')
  2 ['conversion'].sum() / df.groupby(by='age')
  3 ['conversion'].count() * 100

AttributeError:“列表”对象没有属性“总和”

const.price.idx  cons.conf.idx  euribor3m  nr.employed  y   conversion
93.994           -36.4          4.857      5191.0       no  0
93.994           -36.4          4.857      5191.0       no  0
93.994           -36.4          4.857      5191.0       no  0
93.994           -36.4          4.857      5191.0       no  0
93.994           -36.4          4.857      5191.0       no  0

我会很感激任何帮助!

谢谢!

标签: pythongroup-bysumpandas-groupby

解决方案


错误是不言自明的"AttributeError: 'list' object has no attribute 'sum'

在这一行

['conversion'].sum()

['conversion']是列表,您正在访问sum的方法list和 python 列表没有任何方法名称sum

我认为你应该这样做

df['conversion'].sum() instead of ['conversion'].sum()

因为df是一个DataFrame暴露sum方法。


推荐阅读