识别Pandas数据集中的客户流失(非分类)

2024-04-16 12:22:59 发布

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

我有一个如下形式的数据集:

    Company Period  Revenue
0   Apple   2015Q1  10.0
1   Apple   2016Q1  10.0
2   Apple   2017Q1  10.0
3   Walmart 2015Q1  5.0
4   Walmart 2016Q1  5.0
5   Walmart 2017Q1  5.0
6   Walmart 2018Q1  5.0
7   GM  2016Q1  8.0
8   Facebook    2014Q1  9.0
9   Facebook    2015Q1  9.0

你可以重新创建它w/:

import pandas as pd 

Company = ['Apple','Apple','Apple','Walmart','Walmart','Walmart','Walmart','GM','Facebook','Facebook']
Period = ['2015Q1','2016Q1','2017Q1','2015Q1','2016Q1','2017Q1','2018Q1','2016Q1','2014Q1','2015Q1']
Revenue = [10.0, 10.0, 10.0, 5.0, 5.0, 5.0, 5.0, 8.0, 9.0, 9.0]

d = {'Company':Company, 'Period':Period, 'Revenue':Revenue}

df = pd.DataFrame(data = d)

您可以看到,对于每个公司,都有经常性收入,但任何给定的公司都可以取消订阅我想找到一种方法,在包含许多行的数据集中捕获这些取消。

例如,苹果一直坚持到2018年第一季度,预计每年收费。沃尔玛是目前(下一个预期将是2019年第一季度)。通用汽车在2017年第1季度和Facebook在2016年第1季度都有所下降

在不计算未来预期费用的情况下,确定整个数据集中每家公司首次出现这些“缺失”费用的最佳方法是什么(例如沃尔玛案例,没有下降)


Tags: 数据方法importapplefacebook公司company形式
1条回答
网友
1楼 · 发布于 2024-04-16 12:22:59

请看下面的代码。如果我正确理解你的问题,这也许能解决它。如果没有,请澄清问题,我很乐意纠正解决方案:

dfDropOutDates = pd.DataFrame(df.groupby("Company")["Period"].max())
dfDropOutDates.reset_index(inplace=True)
current_quarter = "2018Q1"
dfDropOutDates[dfDropOutDates["Period"] != current_quarter]

相关问题 更多 >