2017-12-15 5 views
0

분당 데이터가있는 시계열 데이터가 있지만 센서의 일부 문제로 인해 데이터가 반입되지 않고 분 데이터가 기록되지 않는 경우가 있습니다. 나는 어느 날과 어떤 시간에 이런 일이 일어나고 있는지 알고 싶다. 팬더 데이터 프레임에 데이터가 있습니다. 이것은 데이터 프레임에 저장하는 코드 조각이며, 수신 된 분 데이터를 표시하고 싶습니다.팬더를 사용하여 시계열 데이터에서 누락 된 분 데이터 찾기

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 기능을 사용할 생각?

답변

1

isin 이렇게하는 것이 좋습니다. 그러나이 작업을 수행하는 가장 쉬운 방법은 Sensor 시간 데이터를 단일 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)] 

물론 시간 간격에만 관심이 있다고 가정합니다.