如何解决在 Pandas 中为 Plotly 中的多级 Sankey 格式化数据:源列和目标列
我有关于学生所修课程顺序的数据,我想使用桑基图来表示课程之间的流程。我的数据是一个长格式的 Pandas 数据帧,其中有人采取的每个步骤都有一行,这些步骤的顺序由列 order
指定:
学生 | 课程 | 顺序 |
---|---|---|
杰瑞 | A | 1 |
杰瑞 | B | 2 |
杰瑞 | C | NaN |
杰西 | C | 1 |
杰西 | A | 2 |
杰西 | B | 3 |
拉斐尔 | A | 1 |
拉斐尔 | C | 2 |
拉斐尔 | C | 3 |
拉斐尔 | B | 4 |
莎莉 | A | 1 |
莎莉 | B | 2 |
莎莉 | C | NaN |
我旋转了这个表,将它聚合成带有每个序列计数的序列:
课程1 | 课程2 | 课程3 | 课程4 | 计数 |
---|---|---|---|---|
A | B | 结束 | 结束 | 2 |
A | C | C | B | 1 |
C | A | B | 结束 | 1 |
请注意,我想保留 End
值,但如果这会导致问题,我很乐意放弃它并让人们停下来。
在 Plotly 中构建 Sankey 需要包含源和目标的数据格式。这是 Plotly 文档中的示例。
source = [0,1,2,3,3],target = [2,4,5],value = [8,8,2]
我需要将我的数据转换为上述格式,但对于我的整个数据框。
如果我正在处理一个小数据集,比如上面的玩具,我可以手动创建它。但是,我有一个包含数千行的数据框,我不知道如何在 Pandas 中执行此操作。看起来像是某种窗口计算,但我不知道该怎么做。
我对如何创建编码方案也有点困惑,因为我失败的尝试创建了一个没有四门课程序列的可视化。
非常感谢任何帮助。
玩具数据:
student = ['Jerry','Jerry','Jessy','Raphael','Sally','Sally']
course = ['A','B','C','A','C']
order = [1,np.NaN,np.NaN]
df = pd.DataFrame({'student':student,'course':course,'order':order})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。