Python:绘制具有两个相关日期列的时间序列数据

Python: plotting time series data with two dependent date columns

我是 Python 的新手,我已经在谷歌上搜索了大约一个小时,但似乎无处可去 - 以前有没有人遇到过这种问题并进行了管理告诉解决了吗?

我正在尝试绘制一个时间序列数据集,该数据集包含两个相关的日期字段中的 1 个指标。例如,A列是日期,B列是该日期内的时间片(顺序)

这是我的数据示例。

        date         period         variable
2 2016-08-01  00:00 - 00:30         1
3 2016-08-01  00:30 - 01:00         2
4 2016-08-01  01:00 - 01:30         3
5 2016-08-01  01:30 - 02:00         4
6 2016-08-01  02:00 - 02:30         5

所以我希望我的 x 轴显示 A 列和 B 列的组合,并且在我的 y 轴上显示 C 列。

有什么想法吗?

我认为您必须将日期和期末结合起来作为时间戳,然后在散点图上绘制时间戳与您的值。

如果周期的持续时间对您很重要,那么您可以为每个观察创建两个数据点,即周期的开始和结束,并将它们与线段连接。这样您就不会丢失有关周期长度的信息。

最简单的解决方案当然取决于数据的来源。由于我们没有此信息,让我们从一些以字符串形式显示日期的列表开始。

import pandas as pd
import matplotlib.pyplot as plt
a = [["2016-08-01",  "00:00 - 00:30",1],
     ["2016-08-01",  "00:30 - 01:00",2],
     ["2016-08-01",  "01:00 - 01:30",3],
     ["2016-08-01",  "01:30 - 02:00",4],
     ["2016-08-01",  "02:00 - 02:30",5]]
df = pd.DataFrame(a, columns=["date", "period", "variable"])
# split "period" column into start and stop
df['starttime'], df['stoptime'] = df['period'].str.split(' - ', 1).str
# create new column with date and starttime
df["datetime"] = pd.to_datetime(df['date'] + ' ' + df['starttime'])
#create new dataframe with datetime as index and variable as only column
df2 = df[["datetime","variable"]]
df2.set_index("datetime",inplace=True)

#plot step function
df2.plot(drawstyle="steps-post")

plt.tight_layout()
plt.show()

Matplotlib:

y 数据:

>>> var
[1, 2, 3, 4, 5]

制作文本标签

>>> labels
['2016-08-01#00:00 - 00:30', '2016-08-01#00:30 - 01:00','2016-08-01#01:00 - 01:30',
 '2016-08-01#01:30 - 02:00', '2016-08-01#02:00 - 02:30']

为绘图创建 x 值

>>> x = list(range(len(labels)))
>>> x
[0, 1, 2, 3, 4]

绘制 x 和 y,为 x 刻度分配标签

from matplotlib import pyplot as plt
plt.plot(x, var)
plt.xticks(x, labels, rotation='vertical')