gpt4 book ai didi

Python Pandas 计算每个类别的返回百分比

转载 作者:太空宇宙 更新时间:2023-11-03 15:42:29 25 4
gpt4 key购买 nike

我有以下 python pandas 数据框:

          |   Number of visits per year  |
user id | 2013 | 2014 | 2015 | 2016 |
A 4 3 6 0
B 3 0 7 3
C 10 6 3 0

我想根据访问次数计算回访用户的百分比。抱歉,我还没有任何代码,我不知道如何开始。

这是我正在寻找的最终结果:

         |       Number of visits in the year     |
Year | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
2014 7% 3% 4% 15% 6% 7% 18% 17% 3% 2%
2015 3% ....
2016

因此,根据上述情况,我可以说,在 2013 年光顾该商店 4 次的客户中,有 15% 在 2014 年再次光顾该商店。

非常感谢。

<小时/>

更新:这就是我所做的,也许有更好的循环方式?

每年,我都有一个像这样的 csv:

user_id |    NR_V
A 4
B 3
C 10

NR_V代表访问次数。

因此,我上传了每个 csv,因为它是自己的 df,并且我有 df_2009、df_2010,...直到 df_2016。

对于每个文件,如果他们明年购物,我会添加一个带有 0/1 的列。

 df_2009['shopped2010'] = np.where(df_2009['user_ID'].isin(df_2010['user_ID']), 1, 0)

然后我旋转每个数据帧。

 pivot_2009 = pd.pivot_table(df_2009,index=["NR_V"],aggfunc={"NR_V":len, "shopped2010":np.sum})

接下来,我为每个数据框创建了一个新的数据框,其中有一列计算访问次数的百分比。

p_2009 = pd.DataFrame()
p_2009['%returned2010'] = (pivot_2009['shopped2010']/pivot_2009['NR_V'])*100

最后,我将所有这些数据框合并为一个。

dfs = [p_2009, p_2010, p_2011, p_2012, p_2013, p_2014, p_2015 ]
final = pd.concat(dfs, axis=1)

最佳答案

考虑示例访问数据帧df

df = pd.DataFrame(
np.random.randint(1, 10, (100, 5)),
pd.Index(['user_{}'.format(i) for i in range(1, 101)], name='user id'),
[
['Number of visits per year'] * 5,
[2012, 2013, 2014, 2015, 2016]
]
)

df.head()

enter image description here

<小时/>

您可以使用参数normalize=True应用pd.value_counts
此外,由于 8 条目代表 8 次单独访问,因此应计数 8 次。我将在 value_counts 之前使用 repeat 来完成此操作

def count_visits(col):
v = col.values
return pd.value_counts(v.repeat(v), normalize=True)

df.apply(count_visits).stack().unstack(0)

enter image description here

关于Python Pandas 计算每个类别的返回百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42012042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com