微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Pandas 中为 Plotly 中的多级 Sankey 格式化数据:源列和目标列

如何解决在 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 举报,一经查实,本站将立刻删除。