如何在python中绘制多个组之间的过渡
Posted
技术标签:
【中文标题】如何在python中绘制多个组之间的过渡【英文标题】:How to plot transition among multiple groups in python 【发布时间】:2021-08-08 07:21:02 【问题描述】:我想在 python 中绘制多个组之间的转换。假设我在给定的日期时间 x 有三组 A、B 和 C。现在在日期时间 y > x 我想可视化 A 的哪些元素转换到 B 组,转换到 C 的百分比。对于 B 和 C 也是如此。我现在可以假设有固定数量的元素。我也可以将其扩展到多个日期,例如 x
可以使用此代码生成我的用例的示例数据框
elements = [f'ei' for i in range(10)]
x = pd.DataFrame('element': elements, 'group': np.random.choice(['A', 'B', 'C'], size=10), 'date': pd.to_datetime('2021-04-01'))
y = pd.DataFrame('element': elements, 'group': np.random.choice(['A', 'B', 'C'], size=10), 'date': pd.to_datetime('2021-04-10'))
df = x.append(y)
现在从上面的数据框中,我想可视化这两个日期从 A、B 和 C 组的过渡是如何发生的。
我的主要问题是我不知道在 python 中使用什么情节来可视化这一点,任何线索都会非常有帮助。
【问题讨论】:
【参考方案1】:这是一种获得所需的方法,即从一个日期转移到另一个日期:
# pivot the data so dates become columns
s = df.pivot(index='element', columns='date', values='group')
将s
设为:
date 2021-04-01 2021-04-10
element
e0 A A
e1 A C
e2 B B
e3 B B
e4 C C
e5 A C
e6 B B
e7 C A
e8 C A
e9 C A
接下来,
# compare the two consecutive dates
pairwise = pd.get_dummies(s.iloc[:, 1]).T @ pd.get_dummies(s.iloc[:,0])
这会给你pairwise
:
A B C
A 1 0 3
B 0 3 0
C 2 0 1
这意味着,例如第一列表示第一个日期有 3 个A
,一个保持A
,第二个日期有2 个更改为C
。最后,您可以使用
pairwise / pairwise.sum()
输出,您可以使用 sns.heatmap
之类的东西来可视化:
A B C
A 0.333333 0.0 0.75
B 0.000000 1.0 0.00
C 0.666667 0.0 0.25
注意关于扩展问题,对于每一对 (day1, day2), (day2, day3),...
,您将拥有一系列这些矩阵。由您决定如何将它们可视化。
【讨论】:
@NikhilMishra 如果您在我编辑之前看到了答案:pairwise
的定义有更新。
是的,观察到了。仍然想知道是否有更好的方法来显示过渡。我更关心可视化部分,如何最好地展示它以上是关于如何在python中绘制多个组之间的过渡的主要内容,如果未能解决你的问题,请参考以下文章
使用 AVQueuePlayer 时如何在视频之间添加过渡?