python - 不明白如何在桑基图中绘制我的数据框
问题描述
我正在尝试使用 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
框放入我上面的数据框所需的结构中。
解决方案
假设你的链接应该是这样的:
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_by
and agg
from pandas
:
value = df.groupby(['Week', 'Sales Bucket'])['Id'].agg('sum').values.flatten()
推荐阅读
- sql - Python批量插入Teradata?默认太慢
- android - 如何在浮动操作按钮上创建自定义点击监听器
- python - 如何覆盖管理员 save_model 方法
- python - Plotly:如何将文本标签添加到直方图?
- java - 输入改变元素颜色的 type="color"
- python-3.x - 在初始化时从单个属性初始化多个属性
- python - 如何确保仅存在一个特定类型的协程
- python - 如何通过从特定字符替换并打开/转发来使用 str.replace
- google-apps-script - 无论我做什么,Google 表格中的 Gapps 脚本都不会滚动
- c# - ASP.net MVC 的视图重用