Создайте панель графиков из многоуровневого фрейма данных Pandas

#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  

Спасибо вам всем,