从两列中创建一个索引层次结构来映射客户保留

2024-06-08 20:04:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为工作执行客户流失分析,并且我一直在尝试基于现有数据帧创建多索引数据帧。你知道吗

我目前有一个数据帧结构类似于:

df.head(3)

CustomerID  Lifetime  Cohort  Monthly_Pay  Ltv_Rev  Sub   Pln_strt  pln Can
----------------------------------------------------------------------------
fgvghc        10     2010-5    14.99        150   2010-5  2010-5-3  2011-5-3
dhsdjk        2      2010-5    14.99        179   2010-5  2010-5-9  2010-7-8   
5uk0ez        3      2010-6    5.99         18    2010-6  2010-6-4  2010-8-2

我正试图找出20个月内每个群体的流失率。“队列”列是队列本身,而“订阅”列则标记保留了多少用户的月份。示例如下:

                  Total_Users 
Cohort  Subscribe
-------------------------------
2010-5  2010-5        2
        2010-6        2
        2010-7        1
        ...

到目前为止,我一直在尝试:

grouped = df.groupby(['Cohort', 'Subscribe'])
grouped.agg({'CustomerID': pd.Series.nunique})

但这不起作用;它只打印每个队列中的总用户数,而没有真正区分队列和订阅列:

                   Total_Users 
Cohort  Subscribe
-------------------------------
2010-5  2010-5        2
2010-6  2010-6        4
2010-7  2010-7        12 

我也试过:

    grouped = df.groupby(['Cohort', 'Subscribe'])['CustomerID'].size()

但是这会打印出上面的结果,但是在一个系列中

更新:为了空间,我没有发布我的实际数据帧,但是现在我意识到我遗漏了可能重要的信息。我添加了计划开始日期和计划取消日期。你知道吗

我认为,映射每个队列的保留期的问题源于使用CustomerID、总客户生存期以及开始和取消日期的错误方法。你知道吗

有人能帮助新手吗? ... 作为参考,我一直以此为指南。 http://www.gregreda.com/2015/08/23/cohort-analysis-with-python/


Tags: 数据df客户队列subscribe结构usershead
1条回答
网友
1楼 · 发布于 2024-06-08 20:04:26

似乎您需要使用size()

import pandas as pd

df = pd.DataFrame([['fgvghc', 10, '2010-5', 14.99, 150, '2010-5'],
                   ['dhsdjk', 12, '2010-5', 14.99, 179, '2010-5'],
                   ['akdsfj', 12, '2010-5', 14.99, 179, '2010-6'],
                   ['5uk0ez', 3, '2010-6', 5.99, 17.97, '2010-6']],
                  columns=['Customer_ID', 'Lifetime', 'Cohort',
                           'Monthly_Payment', 'Lifetime_Rev', 'Subscribed'])

res = df.groupby(['Cohort', 'Subscribed'])['Customer_ID'].size()

结果:

Cohort  Subscribed
2010-5  2010-5        2
        2010-6        1
2010-6  2010-6        1
Name: Customer_ID, dtype: int64

相关问题 更多 >