我在 python 中工作并且有一个包含 50 多个创建的虚拟变量的数据框。现在,我正在尝试创建一个堆积条形图 (perc) 来显示每个月的项目组合是什么。这是数据框:
date | dummy_var1 | dummy_var2 | .. | dummy_var50
2021-01-01 | 3 | 0 | | 0
2021-02-01 | 1 | 0 | | 0
我希望为每个日期创建一个堆积百分比条形图。但是,由于我有 50 多个列并且并非所有列都有值(即 0%),因此我想删除给定月份的 0 列,并且只显示具有正值的列并将它们堆叠起来。
最好的方法是什么?我搜索了 plotly 和 seaborn,但找不到与此用例匹配的任何内容。
import pandas as pd
import numpy as np
import plotly.express as px
S = 4
df = pd.DataFrame(
{
**{"date": pd.date_range("1-jan-2021", freq="MS", periods=12)},
**{
f"dummy_var{i+1}": np.random.choice(
list(range(S)),
12,
p=[0.9 if i == 0 else 0.1 / (S - 1) for i in range(S)],
)
for i in range(50)
},
}
)
px.bar(
df.set_index("date").pipe(lambda d: d.div(d.sum(axis=1), axis=0)).reset_index(),
x="date",
y=[c for c in df.columns if c != "date"],
).update_layout(xaxis={"dtick": "M1"}, yaxis={"tickformat":".2%"})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句