【发布时间】:2020-02-19 04:26:18
【问题描述】:
我有一个如下所示的数据框:
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
我已将日期列更改为日期时间,但不确定如何分组并继续下一步。
【问题讨论】:
-
pd.crosstab(df['customer_id'],df['date']).gt(0)?如果不显示此数据帧的预期输出示例 -
1) 确保
date是datetime类型。 2) 通过df.groupby([df['customer_id'], df['date'].dt.quarter])['sales_amount'].count().unstack('customer_id', fill_value=0).plot.bar()获得季度? -
@ansev 请看上面的示例输出
-
@QuangHoang 这给了我客户 ID 作为标题,我希望每个唯一客户每季度的计数,如上所示。
-
将
unstack中的'customer_id'替换为date?
标签: pandas pandas-groupby