首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中绘制多个组之间的过渡

如何在python中绘制多个组之间的过渡
EN

Stack Overflow用户
提问于 2021-05-19 11:44:40
回答 1查看 42关注 0票数 0

我想在python中绘制多个组之间的转换。假设我在给定的日期时间x有三个组A,B和C。现在在日期时间y>x,我想可视化A的元素有多少%转换到了组B,%到C。类似地,对于B和C,我现在可以假设有固定数量的元素。另外,我可以将其扩展到多个日期,如x

可以使用以下代码生成我的用例的示例数据帧

代码语言:javascript
复制
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中使用什么图来可视化这一点,任何线索都会很有帮助。

EN

回答 1

Stack Overflow用户

发布于 2021-05-19 12:01:25

这里有一种方法可以得到你需要的东西,比如从一个日期转移到另一个日期:

代码语言:javascript
复制
# pivot the data so dates become columns
s = df.pivot(index='element', columns='date', values='group')

这就给出了s

代码语言:javascript
复制
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

接下来,

代码语言:javascript
复制
# compare the two consecutive dates
pairwise = pd.get_dummies(s.iloc[:, 1]).T @ pd.get_dummies(s.iloc[:,0])

这将为您提供pairwise

代码语言:javascript
复制
   A  B  C
A  1  0  3
B  0  3  0
C  2  0  1

这意味着,例如,第一列显示第一个日期有3个A,一个保持A,第二个日期更改为C

代码语言:javascript
复制
pairwise / pairwise.sum()

输出,您可以使用类似于sns.heatmap的东西来可视化:

代码语言:javascript
复制
          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),...都有一系列这样的矩阵。如何可视化它们由您决定。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67596638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档