python - 使用 pandas 查找时间序列数据中缺失的分钟数据

标签 python pandas numpy

我有一个时间序列数据,其中有每分钟的数据,但是由于传感器的一些问题,有时无法获取数据并且没有记录该分钟的数据。我想知道这件事发生在哪一天、什么时间。我有 pandas 数据框中的数据。这是我要存储在数据框中的代码片段,我想显示未收到哪一分钟的数据。

l=['Year', 'Month', 'Day', 'Hour', 'Minute']
df = pd.DataFrame(columns=l)
k=0

if __name__ == '__main__':
    client = MongoClient("localhost", 27017, maxPoolSize=50)
    db=client.test
    collection=db['data']
    cursor = collection.find({"deviceId":3},{"timestamp":1,"cd":1}).sort("timestamp",-1).limit(1000)
    for document in cursor:
        for key,value in document.items()[1:-1]:
            df.loc[k,'Year']=2017
            df.loc[k,'Month']=value.month
            df.loc[k,'Day']=value.day
            df.loc[k,'Hour']=value.hour
            df.loc[k,'Minute']=value.minute
            k=k+1
    minute_a = pd.Series(np.arange(0, 60))

我正在考虑使用 minute_a 来使用 isin 函数,但由于每个小时我都必须检查,我不知道该怎么做?

最佳答案

isin将是这样做的好方法。不过,最简单的方法是将传感器时间数据平铺到单个 DatetimeIndex 中,以便您可以将其与引用 DatetimeIndex 进行比较。

# creating reference DatetimeIndex idx_ref with a minute frequency
end=datetime.now().replace(second=0, microsecond=0)
dt = end - timedelta(days=1)
idx_ref = pd.DatetimeIndex(start=dt, end=end,freq='min')

# idx_dat represents your DatetimeIndex from the sensor
gaps = idx_ref[~idx_ref.isin(idx_dat)]

假设您当然只对时间间隙感兴趣。

关于python - 使用 pandas 查找时间序列数据中缺失的分钟数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47831863/

相关文章:

python - Numpy 从 2 个数组中选择元素

php - 简单的Python房间聊天服务器

python - 将与唯一标签相对应的值附加为 pandas 数据框中的值列表

numpy - 正向与反向模式区分 - Pytorch

python - 将值重新映射到其他值并提供默认值

python - 如何将行值转换为 Pandas 中的属性(列)

python - 如何获取用户 session 的 Pandas TimeSeries(使用 Pandas 或 Numpy)

python - 像 Linux 命令一样运行 python 脚本

python - ndarray 行不显示每一行

python - python Selenium 包中的格式错误