Как посчитать и нанести на график данные временных рядов (ежечасно) в Python)? - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть случайные данные временного ряда (ГГГГ-ММ-ДД ЧЧ: ММ: СС. Я могу посчитать все данные на основе дня недели, года, часа, но я пытаюсь считать от 8 до 17 часов. Также, хочу построить и показать подсчитанный диапазон чисел как 8-10, 10-12, 12-13, 13-15, 15-17.

Мои коды;

df = pd.read_excel("C:/Users/gokhankazar/Desktop/Accident Times/Accident_Time-Series.xlsx")
df["Hour"] = df.Datetime.dt.hour
df.Hour.value_counts().sort_index().plot(marker='o', linestyle='-')
plt.xlabel('Hours', fontsize=10)
plt.ylabel("Number of Accident", fontsize= 10)
plt.show()

И я получил график, как показано ниже Моя фигура, которую я получил

Но как я могу изменить диапазон моей оси на графике.

Также у меня есть дни недели как Число WeekDay

Я хочу записать по оси x понедельник вместо «0» и воскресенье вместо «6» со всеми другими днями

мой столбец Datetime как (всего 268000 строк) и просто считать событие аварии на основе данных временного ряда

18.05.2015  09:00:00
18.05.2015  15:00:00
18.05.2015  14:14:00
18.05.2015  09:00:00
.
.
.

1 Ответ

0 голосов
/ 07 февраля 2020

Вам необходимо группировать данные каждые 2 часа и устанавливать соответствующие отметки для вашего графика.

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.DataFrame({'date': ['18.05.2015 09:00:00','18.05.2015 15:00:00', '18.05.2015 14:14:00', '18.05.2015 11:00:00']})

# convert to datetime
df['date'] = pd.to_datetime(df['date'])
# group time every 2h
df = df.groupby(df.date.dt.floor('2H')).count()

# plot data
fig, ax1 = plt.subplots()
ax1.set_xticks(np.arange(8, 15, 2))
ax1.set_xticklabels(['8-10', '10-12', '12-14', '14-16'])
plt.plot(df.index.hour, df.date, '.')
plt.show()

Выход:

enter image description here

...