具有 50 多个创建的虚拟变量的堆积条形图(百分比)? [关闭]
Posted
技术标签:
【中文标题】具有 50 多个创建的虚拟变量的堆积条形图(百分比)? [关闭]【英文标题】:Stacked Bar Graph (Percentage) with 50+ created dummy variables? [closed] 【发布时间】:2021-11-23 15:13:48 【问题描述】:我正在使用 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,但找不到与此用例匹配的任何内容。
【问题讨论】:
这个问题很混乱。您需要添加更多关于确切需要什么的信息。您要堆叠日期还是 dummy_vars? “dummy_var1”是一个有意义的名字吗?当您说“百分比”时,您如何定义 100%?你能把你的项目组织成有意义的组吗?你能发布你尽力而为的代码吗? 【参考方案1】: 使用此技术:Compute row percentages in pandas DataFrame? 然后使用 plotly express 变得非常简单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_vari+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%")
【讨论】:
以上是关于具有 50 多个创建的虚拟变量的堆积条形图(百分比)? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
R 具有两个因子变量的堆积百分比条形图 - 如何在图中标记百分比,而不计算 NA?