我有一些颗粒物传感器和CSV的时间序列,比如:
传感器A:
date value
date
2017-11-30 00:00:00 30/11/17 0.00 49
2017-11-30 00:02:00 30/11/17 0.02 51
2017-11-30 00:03:00 30/11/17 0.03 54
2017-11-30 00:05:00 30/11/17 0.05 57
2017-11-30 00:07:00 30/11/17 0.07 53
2017-11-30 00:08:00 30/11/17 0.08 55
2017-11-30 00:10:00 30/11/17 0.10 55
2017-11-30 00:12:00 30/11/17 0.12 58
2017-11-30 00:13:00 30/11/17 0.13 57
2017-11-30 00:15:00 30/11/17 0.15 58
....
2018-02-06 09:30:00 6/2/18 9.30 33
2018-02-06 09:32:00 6/2/18 9.32 31
2018-02-06 09:33:00 6/2/18 9.33 34
2018-02-06 09:35:00 6/2/18 9.35 32
2018-02-06 09:37:00 6/2/18 9.37 33
2018-02-06 09:38:00 6/2/18 9.38 30
我将日期设置为索引:
^{pr2}$我想把来自同一传感器和不同传感器的数据在相似的时间窗口中的不同时间窗口关联起来。我想知道我在一天中的某个时间是否有同样的增减行为。 设置“日期索引”后,我可以得到“每天上午9点到10点从传感器A的所有PM值”
df.between_time('9:00','10:00')
1)问题1:如何检查来自同一传感器但不同日期的相关性:我在两个数据帧中过滤了两天上午9:10的数据,但并非总是在同一分钟获取。我可能会遇到这样的情况:
01-01-2018 (df01 - I removed data column)
2018-01-01 09:05:00 11
2018-01-01 09:07:00 11
2018-01-01 09:09:00 10
....
02-01-2018 (df02)
2018-02-01 09:05:00 67
2018-02-01 09:07:00 68
2018-02-01 09:08:00 67
....
我应该重命名数据列吗?第三个窗口01/2018的第三个值实际上与第二个01/2018值相关。在
df01.corr(df02)
退货
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
2)问题2:不同传感器之间的关联在这种情况下,我有两个CVS文件,其中包含两个传感器的PM值。作为问题1,我想从它们关联相同的时间窗口。 即使在这种情况下,我也希望数据之间有一些“偶然的延迟”,但分钟之间的错误是可以的,我只想检查“在正确位置”的值。示例:
Sensor A:
date value
date
2017-11-30 00:00:00 30/11/17 0.00 49
2017-11-30 00:02:00 30/11/17 0.02 51
2017-11-30 00:03:00 30/11/17 0.03 54
2017-11-30 00:05:00 30/11/17 0.05 57
Sensor B:
date value
date
2017-11-30 00:00:00 30/11/17 0.00 1
2017-11-30 00:02:00 30/11/17 0.02 40
2017-11-30 00:04:00 30/11/17 0.03 11
2017-11-30 00:05:00 30/11/17 0.05 57
AxB
date valueA valueB
date
2017-11-30 00:00:00 30/11/17 0.00 49 1
2017-11-30 00:02:00 30/11/17 0.02 51 40
2017-11-30 00:03:00 30/11/17 0.03 54 11
2017-11-30 00:05:00 30/11/17 0.05 57 57
提前谢谢你
我会试着把你们的两个问题放在一起。这看起来像是^{} 的一个作业,它在最近的匹配键上合并,而不是只在精确的键上合并。在
示例数据
预处理
^{pr2}$在最近的索引匹配上合并数据帧
相关性
请注意,
df.corr()
不接受数据作为参数,因此df1.corr(df2)
不起作用。corr
方法计算调用它的数据帧(docs)中列的成对相关性。在注释
上面的},中接收最接近的匹配,并且替换为,因此,如果}的结果将包含来自{}的重复值。结果的行数与
pd.merge_asof
的用法保留了df1
的索引;df1
中的每一行在{df2
的行数少于df1
,则{df1
相同。在您提到,实际上只关心按相对位置比较行,例如,比较}的第三个值。不使用
df1
的第三个值与{merge_asof
,您可以在使用时间索引获取感兴趣的时间段后忽略它,并使用df.values
访问底层numpy数组:相关问题 更多 >
编程相关推荐