查看客户是否每个季度都有购买,然后绘制图表

新秀89

我有一个看起来像这样的数据框:

 customer_id|date      |sales_amount
 479485     |20190120  | 500         
 479485     |20180320  | 200           
 472848     |20191020  | 100         

该数据具有 2016-2019 年的交易信息。对于每个业务季度(按 3 个月分组),我想查看唯一客户是否进行了交易。基本上,我希望表格的 y 轴是每个唯一的 customer_id,然后表格的 x 轴是数据时间段中的 12 个季度,并带有一个布尔值,表示客户是否在其中进行了交易四分之一。

最终,我想将这些数据可视化,以查看每个季度所有独特客户的交易分布。

期望输出:

 customer_id|2017- Q1  |2017- Q2|.. |2019- Q4
 479485     |20190120  |   0    |.. |   1 
 469488     |20180320  |   0    |.. |   0  
 452848     |20191020  |   1    |.. |   1 

我已将日期列更改为日期时间,但不确定如何分组并继续下一步。

伊恩

解决方案:

df.groupby([df['customer_id'], df['date'].apply(lambda _: pd.Period(_, 'Q'))])['sales_amount'].count().unstack().fillna(0)

输出:

       date 2017Q1  2018Q1  2019Q1  2019Q4
customer_id             
469471      1.0     0.0     0.0     0.0
469488      0.0     1.0     1.0     1.0
472848      0.0     0.0     0.0     1.0
479485      1.0     1.0     1.0     0.0

笔记

  • 假设:(1) 所有年季度都出现在您的数据集中,(2) 每个季度只有一个交易。
  • 要解决 (1) 问题,请将索引设置为date,并使用缺失日期重新索引,用零值填充 nans。上述输出基于虚拟数据样本,因此只显示了四个季度。
  • 为了解决(2),运行np.sign(_)你的输出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章