Python 重新采样/重新索引传感器数据

Python 重新采样/重新索引传感器数据,python,pandas,Python,Pandas,我想对传感器数据进行一些数据处理(大约300个不同的传感器)。这是来自温度传感器的原始数据示例: "2018-06-30T13:17:05.986Z" 30.5 "2018-06-30T13:12:05.984Z" 30.3 "2018-06-30T13:07:05.934Z" 29.5 "2018-06-30T13:02:05.873Z" 30.3 "2018-06-30T12:57:05.904Z" 30 我想对数据重新采样以平滑日期时间: 13:00:00 13:05:00 1

我想对传感器数据进行一些数据处理(大约300个不同的传感器)。这是来自温度传感器的原始数据示例:

 "2018-06-30T13:17:05.986Z" 30.5
 "2018-06-30T13:12:05.984Z" 30.3
 "2018-06-30T13:07:05.934Z" 29.5
 "2018-06-30T13:02:05.873Z" 30.3
 "2018-06-30T12:57:05.904Z" 30
我想对数据重新采样以平滑日期时间:

13:00:00
13:05:00
13:10:00
...
我已经写了一些代码,但在更大的文件上使用时速度非常慢。我的代码只是通过线性插值将所有数据的采样增加到1秒。并随后将样本降低至要求的频率

有没有更快的方法来实现这一点

编辑:
传感器数据写入数据库,我的代码从数据库加载任意时间间隔的数据

我的工作代码

upsampled = dataframe.resample('1S').asfreq()
upsampled = upsampled.interpolate(method=method, limit=limitT) # ffill or bfill for some sensors 
resampled = upsampled.astype(float).resample(str(sampling_time) + 'S').mean() # for temperature 
resampled = upsampled.astype(float).resample(str(sampling_time) + 'S').asfreq() # for everything else

您可以首先将数据帧的索引设置为带有时间戳的列,然后使用
resample()
方法将其设置为每1秒或每5min间隔的数据

例如:

temp_df = pd.read_csv('temp.csv',header=None)
temp_df.columns = ['Timestamps','TEMP']
temp_df = temp_df.set_index('Timestamps') #set the timestamp column as index
temp_re_df = temp_df.TEMP.resample('5T').mean()

可以将时间段设置为<代码> ReSAMPLE()/代码>即t min、s秒、m月、h小时等,还应用一个函数如<代码>均值(或)>或<代码>最大()(<代码> >或<代码>())/代码>考虑下采样方法。


注:这是因为你的时间戳是熊猫的日期时间格式。否则使用
pd.to_datetime(temp_df['Timestamps',unit='s')
转换为datetime索引列

,因为这是传感器数据,是否可以安全地假设这是输入代码的实时数据?或者数据被写入文件或数据库,而您正在从中读取?传感器数据被写入数据库,我的代码从数据库中加载任意时间间隔的数据。我猜错误是因为您没有根据df的哪个列或索引指定重采样。尝试设置索引或指定重新采样列。如果答案有用,请进行投票。快乐编码:)嗨,刚刚看到答案,谢谢!我将评估它是否在我所有的用例中都有效,但它看起来很有前途!伟大的去争取吧