我想在python中绘制多个组之间的转换。假设我在给定的日期时间x有三个组A,B和C。现在在日期时间y>x,我想可视化A的元素有多少%转换到了组B,%到C。类似地,对于B和C,我现在可以假设有固定数量的元素。另外,我可以将其扩展到多个日期,如x
可以使用以下代码生成我的用例的示例数据帧
elements = [f'e{i}' 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中使用什么图来可视化这一点,任何线索都会很有帮助。
发布于 2021-05-19 12:01:25
这里有一种方法可以得到你需要的东西,比如从一个日期转移到另一个日期:
# 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,第二个日期更改为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),...都有一系列这样的矩阵。如何可视化它们由您决定。
https://stackoverflow.com/questions/67596638
复制相似问题