我有这样的两列 Dataframe (以日期作为索引):
我的目标是用seaborn像这样绘制酒吧(用excel):
我跟踪了seaborn multiple variables group bar plot的讨论
我知道我必须使用melt,但是当我输入下面的代码时,结果是index(date)消失了(被number取代),并且 Dataframe 结构发生了如下变化:
# pd.melt(df, id_vars=['A'], value_vars=['B'])
premier_melt = pd.melt(final_mada_df,id_vars=["Confirmed"],value_vars = ["Recovered"])
如何解决这类问题才能正确地用海运来划分酒吧
我把下面的代码下面的建议:
# main dataframe
df2
Recovered Confirmed
3/20/20 0 3
3/21/20 0 0
3/22/20 0 0
3/23/20 0 9
df2.stack()
输出:
3/20/20 Recovered 0
Confirmed 3
3/21/20 Recovered 0
Confirmed 0
3/22/20 Recovered 0
..
5/4/20 Confirmed 0
5/5/20 Recovered 2
Confirmed 2
5/6/20 Recovered 0
Confirmed 7
Length: 96, dtype: int64
df2.rename(columns={'level_1':'Status',0:'Values'})
输出:
Recovered Confirmed
3/20/20 0 3
3/21/20 0 0
3/22/20 0 0
3/23/20 0 9
3/24/20 0 5
但是当我输入下面的代码时,出现了一个错误:
# plot
ax = sns.barplot(x=df2.index,y='Values',data=df2,hue='Status')
ValueError: Could not interpret input 'Values'
1条答案
按热度按时间r7knjye21#
.stack()
或.melt
将 Dataframe 从宽格式转换为长格式,如下所示。导入和示例数据
转换数据框
使用
.stack
使用
.melt
转换结果
海运图
df
而不是df1
。如上所述,每个日期都重复,因此df1.index.to_series()
将生成一个具有重复日期的列表。或者
df.plot.bar()
df1
df
有一个datetime索引,它被识别为x轴,所有列都绘制在y轴上。