我有两个时间序列数据集,我想制作一个步骤图。
时间序列数据介于2015-04-20周一至2015-04-24周五之间。
第一个数据集包含26337行,值范围为0-1
第二个数据集包含80行,值介于0-4之间。
第一个数据集表示房间中的运动传感器值,每次测量之间约2-3分钟。 1表示房间被占用,0表示房间是空的。第二个包含来自调查的数据,用户可以在回答调查时填写同一房间的人数。
现在我想比较这些数据,以了解传感器的性能。显然,有很多数据缺失了#34;在第二组。有没有办法填补"空白"在步骤图中?
每一行都有以下格式:
头
时间戳(%Y-%m-%d%H:%M:%S),值
示例:
时间,占用
24-04-2015 21:40:33,1
24-04-2015 21:43:11,0
.....
到目前为止,我已设法导入第一个数据集并绘制它的图。不幸的是,x轴没有显示日期,而是显示了很多数字:
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
data = open('PIRDATA.csv')
ts = pd.Series.from_csv(data, sep=',')
plot(ts);
结果:
我现在怎样才能从这里继续?
答案 0 :(得分:1)
尝试使用Pandas读取数据,使用Date列作为索引(将值解析为日期)。
data = pd.read_csv('PIRDATA.csv', index_col=0, parse_dates=0)
要实现步骤图目标,请尝试:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.dates import DateFormatter
from matplotlib.dates import HourLocator
small_dataset = pd.read_csv('SURVEY_RESULTS_WEEK1.csv', header=0,index_col=0, parse_dates=0)
big_dataset = pd.read_csv('PIRDATA_RAW_CONVERTED_DATETIME.csv', header=0,index_col=0, parse_dates=0)
small_dataset.rename(columns={'Occupancy': 'Survey'}, inplace=True)
big_dataset.rename(columns={'Occupancy': 'PIR'}, inplace=True)
big = big_dataset.plot()
big.xaxis.set_major_formatter(DateFormatter('%y-%m-%d H: %H'))
big.xaxis.set_major_locator(HourLocator(np.arange(0, 25, 6)))
big.set_ylabel('Occupancy')
small_dataset.plot(ax=big, drawstyle='steps')
fig = plt.gcf()
fig.suptitle('PIR and Survey Occupancy Comparsion')
plt.show()