【问题标题】:How to Count and Plot Interval Time Series Data (Hourly) in Python)?如何在 Python 中计算和绘制间隔时间序列数据(每小时)?
【发布时间】:2020-05-23 08:07:42
【问题描述】:

我有事故时间序列数据(YYYY-MM-DD HH:MM:SS。我可以根据工作日、年份、小时计算所有数据,但我试图计算 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()

我得到了如下图 My figure that I got

但是如何更改绘图图中的轴范围。

我也有工作日的数字 WeekDay figure

我想在 x 轴上写星期一而不是“0”和星期日而不是所有其他日子的“6”

我的日期时间列为(共 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
.
.
.

【问题讨论】:

  • 你可以使用df.Datetime.between_time('8:00', '17:00')
  • 谢谢 luigigi,但它给出了 datetimeIndex 错误。
  • @GokhanKazar 你能发布或提供原始数据的链接吗?在第一个小时图中,您尝试将数据按 2 小时分组并用适当的刻度绘制?
  • @ZarakiKenpachi 我编辑了我的问题并放置了我的日期时间列。谢谢。
  • @GokhanKazar 将此数据作为文本发布在您的问题中。我的第二个问题呢?

标签: python plot time-series intervals


【解决方案1】:

您需要每 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()

输出:

【讨论】:

    猜你喜欢
    • 2022-10-06
    • 1970-01-01
    • 2012-11-18
    • 2014-09-23
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多