我是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列。
有什么想法吗?
答案 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()
答案 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')