#python #pandas #dataframe #plot
#питон #панды #фрейм данных #сюжет
Вопрос:
У меня возникли проблемы с попыткой создать график баров из фрейма данных pandas, что должно быть легко, но я не могу заставить его работать. У меня есть фрейм данных, который выглядит так:
Данные A | Данные B | Данные C | |
---|---|---|---|
отметка времени | |||
06:54:00 | 0.1 | 0.2 | 0.3 |
Но вместо 3 столбцов с данными у меня 99. Дело в том, что я пытаюсь построить гистограмму, представляющую по оси 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)
Но ни один из них не работает, и я думаю, что проблема связана с форматом моего фрейма данных из-за столбца «метка времени». Однако мне не удалось удалить его, я попытался:
data = data.droplevel('timestamp')
И:
data = data.drop(['timestamp'], axis=1)
Но ни один из них не работает. Не мог бы кто-нибудь, пожалуйста, помочь мне с этим?
Комментарии:
1. Как вы получили эти данные? это
timestamp
клетка? или это индекс? Я не думаю, что это колонка второго уровня tbh.2. Похоже, метка времени-это индекс
3. Можете ли вы включить вывод
data.iloc[:,:3].head().to_dict()
?
Ответ №1:
Это ответ на ваш вопрос?
new_df = df.melt(var_name="Data") new_df.plot(kind='bar', x='Data', y='value')
Ответ №2:
Наконец-то мне удалось ее решить.
То, что я сделал, было:
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
Спасибо вам всем,