Python:使用两个相关日期列绘制时间序列数据

时间:2017-09-24 12:52:41

标签: python matplotlib data-visualization bokeh seaborn

我是Python的新手,我现在用Google搜索了大约一个小时,似乎无法到达任何地方 - 以前有人遇到过这种问题并且管理过解决它?

我试图在两个日期字段中绘制一个包含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列。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

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

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()

enter image description here

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

Matplotlib:

数据:

>>> 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-ticks指定标签

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