从 Pandas 多级数据框制作一个绘图栏
Make a Plot Bar from Pandas multilevel dataframe
我在尝试从 pandas 数据框制作条形图时遇到了麻烦,这应该很容易,但我做不到。
我有一个看起来像这样的数据框:
Data A
Data B
Data C
timestamp
06:54:00
0.1
0.2
0.3
但我有 99 列,而不是 3 列数据。
关键是我正在尝试绘制一个条形图,在 x 轴上表示不同的数据,在 y 轴上表示值。
我试过:
p = data.hvplot.bar(x = 'Data', y = 'Units', rot = 90)
和
p = data.plot(kind='bar', title="Data", figsize=(15, 10), legend=True, fontsize=12)
但是其中 none 正在工作,我认为问题出在我的数据框的格式上,因为列 'timestamp'。
但是,我没有删除它,我试过了:
data = data.droplevel('timestamp')
并且:
data = data.drop(['timestamp'], axis=1)
但其中 none 个正在运行。有人可以帮助我吗?
这是否回答了您的问题?
new_df = df.melt(var_name="Data")
new_df.plot(kind='bar', x='Data', y='value')
终于解决了
我所做的是:
new_df = data.melt(var_name="Data")
获取没有时间戳的新数据框。
那么:
titles = new_df['Data'].to_list()
values = new_df['value'].to_list()
获取两个列表,一个包含标题,另一个包含值。
然后我用以下代码绘制图表:
p = figure(x_range=titles, height=500, width=1500, title="Unit",
toolbar_location=None, tools="")
p.vbar(x=titles, top=values, width=0.6)
p.xgrid.grid_line_color = None
p.xaxis.major_label_orientation = "vertical"
p.y_range.start = 0
谢谢大家,
我在尝试从 pandas 数据框制作条形图时遇到了麻烦,这应该很容易,但我做不到。 我有一个看起来像这样的数据框:
Data A | Data B | Data C | |
---|---|---|---|
timestamp | |||
06:54:00 | 0.1 | 0.2 | 0.3 |
但我有 99 列,而不是 3 列数据。 关键是我正在尝试绘制一个条形图,在 x 轴上表示不同的数据,在 y 轴上表示值。
我试过:
p = data.hvplot.bar(x = 'Data', y = 'Units', rot = 90)
和
p = data.plot(kind='bar', title="Data", figsize=(15, 10), legend=True, fontsize=12)
但是其中 none 正在工作,我认为问题出在我的数据框的格式上,因为列 'timestamp'。 但是,我没有删除它,我试过了:
data = data.droplevel('timestamp')
并且:
data = data.drop(['timestamp'], axis=1)
但其中 none 个正在运行。有人可以帮助我吗?
这是否回答了您的问题?
new_df = df.melt(var_name="Data")
new_df.plot(kind='bar', x='Data', y='value')
终于解决了
我所做的是:
new_df = data.melt(var_name="Data")
获取没有时间戳的新数据框。 那么:
titles = new_df['Data'].to_list()
values = new_df['value'].to_list()
获取两个列表,一个包含标题,另一个包含值。
然后我用以下代码绘制图表:
p = figure(x_range=titles, height=500, width=1500, title="Unit",
toolbar_location=None, tools="")
p.vbar(x=titles, top=values, width=0.6)
p.xgrid.grid_line_color = None
p.xaxis.major_label_orientation = "vertical"
p.y_range.start = 0
谢谢大家,