Как вывести график plot.show () для даты и времени в формате «мм-дд-ггг чч: мм: сс» в PyPlot? - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь построить набор данных из data.boston.gov (https://data.boston.gov/dataset/central-library-electricity-usage) с использованием Anaconda Spyder. Исходный набор данных содержит более 2x10 ^ 5 экземпляров, поэтому я ограничился 2018. График не будет отображаться.

import pandas as pd
from matplotlib import pyplot as plt

data = pd.read_csv('bpl_energy_2018.csv')

plt.plot(data.datetime_measured,data.total_demand_kw)
plt.show()

['datetime_measured','total_demand_kw']

- 0 12-31-18 23:55:00 561
- 1 12-31-18 23:50:00 568
- 2 12-31-18 23:45:00 576
...
- 53690  01-01-18 03:40:00 770
- 53691  01-01-18 03:30:00 813
- 53692  01-01-18 02:55:00 777

[53693 rows x 2 columns]

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Поскольку вы строите временные ряды, я бы рекомендовал использовать встроенные функции построения графиков pandas, особенно если у вас уже есть данные в виде DataFrame.

. Чтобы сохранить формат даты и времени вxaxis, вам просто нужно сообщить функции .plot(), какие столбцы использовать.Например:

import pandas as pd
from matplotlib import pyplot as plt

data = pd.read_csv('bpl_energy_2018.csv')
data.sort_values('datetime_measured', inplace=True)

data.plot('datetime_measured', 'total_demand_kw')

# Rotate and align xtick labels
ax.get_figure().autofmt_xdate()

# make room for tick labels
plt.tight_layout()

plt.show()

Обратите внимание, что я повернул галочки с помощью ax.get_figure().autofmt_xdate() и выделил для них пространство, используя tight_layout().

enter image description here

0 голосов
/ 31 января 2019

Я думаю, причина в том, что они не работают, потому что ваши данные не в порядке, поэтому matplotlib не знает, что делать со значениями, которые вы им предоставляете.

В Pandas есть некоторые встроенныефункции построения графика, так что вы сможете отображать данные только с помощью

data.plot()
plt.show()

. Тогда график выглядит так:

data_plotted_through_2018

Но это в основном простослучайный шумЕсли вы посмотрите на значения в CSV, вы увидите, что они не отсортированы по времени.Мы можем исправить это без особых проблем:

data.sort_values('datetime_measured', inplace=True)
data.reset_index(drop=True, inplace=True)

Если мы построим это снова, мы получим это:

this plot.

...