首页 > 解决方案 > 不明白如何在桑基图中绘制我的数据框

问题描述

我正在尝试使用 plotly 绘制我的客户每周如何在销售桶之间移动的 sankey 图。现在,我的数据框如下所示:

account_id |    week    | sales_bucket
     1     | 2019-06-10 |   $0-20
     1     | 2019-06-17 |   $21-40
     1     | 2019-06-24 |   $0-20
     2     | 2019-06-10 |   $40-60
     2     | 2019-06-17 |   $40-60
     3     | 2019-06-17 |   $60-80
     4     | 2019-06-10 |   $40-60

本质上,我想跟踪客户是否每周都进入更高的桶。但不是每个客户每周都会进行交易,当然每周也会有新客户。我很难理解如何快速将我的数据source-sink-count框放入我上面的数据框所需的结构中。

标签: pythonpandasplotlysankey-diagram

解决方案


假设你的链接应该是这样的:

label = [
  "Week 1 - Bucket 1", 
  "Week 1 - Bucket 2", 
  "Week 1 - Bucket 3", 
  "Week 2 - Bucket 1", 
  ...
  ]

那么source和(从源标签到目标标签target索引的流程)原则上是:

source = [0, 0, 0, 1, 1, 1, 2, 2, 2, ...]
target = [3, 4, 5, 3, 4, 5, 3, 4, 5, ...]

最后一点是计算链接中的权重。为此,您可以使用group_byand aggfrom pandas

value = df.groupby(['Week', 'Sales Bucket'])['Id'].agg('sum').values.flatten()

推荐阅读