我有两个时间序列数据集,我想为其制作步骤图。
时间序列数据为2015年4月20日星期一至2015年4月24日星期五之间。
第一个数据集包含 26337 行,值范围为 0-1。
第二个数据集包含 80 行,其值介于 0-4 之间。
第一个数据集表示房间内的运动传感器值,每次测量之间大约有 2-3 分钟的时间。 1表示房间有人,0表示房间空。第二个包含来自调查的数据,用户可以填写在回答调查时同一房间中有多少人。
现在我想比较这些数据,以了解传感器的性能如何。显然第二组有很多数据“缺失”。有没有办法填写步骤图中的“空白”?
每一行具有以下格式:
标题
时间戳(%Y-%m-%d %H:%M:%S),值
示例:
时间、占用
2015年4月24日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);
结果:
从现在开始我将如何继续?
最佳答案
尝试使用 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()
关于python - 如何使用来自两个不同数据源的时间序列数据在 Pandas 中创建步骤图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30311513/