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

标签 python pandas

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

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

结果:
enter image description here

从现在开始我将如何继续?

最佳答案

尝试使用 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

关于python - 如何使用来自两个不同数据源的时间序列数据在 Pandas 中创建步骤图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30311513/

相关文章:

python - 如何在Python中使用pandas在现有Excel工作表中追加列

Python pandas.core.frame.Dataframe 索引不正确/如何删除 csv 文件每行末尾的逗号?

python - 如何在我的类中继承QtWidgets.QWidget并使我的类类型-QtWidgets.QWidget?

python - Django ManyToMany疑问

python - 按多索引中的级别子集对数据帧进行排序

python - 有没有办法删除 Excel 中的无效字符?

python - 如何将一个数据框合并到另一个数据框中,插入不存在的行?

python - 在 Python 中以 HTML 形式发送 MySQL 查询

python - 安静地重启 Python 解释器

python - 使用中间件修改 Pylons 中的 header