如何使用来自两个单独数据源的时间序列数据在Pandas中创建步骤图

时间:2015-05-18 19:38:37

标签: python pandas

我有两个时间序列数据集,我想制作一个步骤图。

时间序列数据介于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);

结果:
enter image description here

我现在怎样才能从这里继续?

1 个答案:

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

enter image description here