2017-04-02 11 views
0

팬더에 대해 새롭다. 무작위 데이터 생성 예제의 수가 적다.팬더 최대 굴림 평균

그래프를 만들려는 시도는 bokeh과 함께 롤링 시간 창을 사용하는 것입니다. 나는 x 축을 (리샘플링 된 것이 든간에) 타임 스탬프와 max, minmean 값을 표시하는 3 행을 duration 필드에 대해 15 초의 시간 창을 롤링한다고 가정합니다.

기쁨은 시작하기 전에 멈 춥니 다 ... 나는 많은 것을 배우거나 진행하지 않고 많은 예제를 적용하려고했습니다. 나는 롤링 물건 작업을 얻을 수 있다면

ValueError: window must be an integer

, 나는 아마 bokeh 측면을 관리 할 수있는 것 :

d2 = pd.read_csv(input_file, delimiter=",") 
d2["ts_send"] = pd.to_datetime(d2["ts_send"], \ 
format="%Y-%m-%d %H:%M:%S.%f", exact=True, utc=True) 

print (d2.head()) 
print (d2.rolling("15s", min_periods=1).mean().head()) 
print (d2.rolling("15s", min_periods=1).std().head()) 
print (d2.rolling("15s", min_periods=1).min().head()) 
print (d2.rolling("15s", min_periods=1).max().head()) 

아래의 코드는 예외를 생성합니다.

이 문제를 해결하기 위해 지원되는 모든 포인터는 높이 평가됩니다!

나는 CSV에서이 데이터를 가지고 :

 
ts_send,endpoint,duration, 
2017-01-19 09:03:28.600,/api/sig,1.0 
2017-01-19 09:03:29.760,/api/sig,0.5 
2017-01-19 09:04:51.210,/api/sig,0.508 
2017-01-19 09:04:52.410,/api/sig,0.574 
2017-01-19 09:09:32.854,/api/sig,1.0 
2017-01-19 09:09:36.776,/api/sig,0.637 
2017-01-19 09:14:14.207,/api/sig,0.672 
2017-01-19 09:14:16.906,/api/sig,0.533 
2017-01-19 11:49:34.939,/api/sig,1.0 
2017-01-19 11:49:38.709,/api/sig,0.529 
2017-01-19 12:19:01.668,/api/sig,1.0 
2017-01-19 12:19:05.559,/api/item,0.169 
2017-01-19 12:19:05.559,/api/item,0.102 
2017-01-19 12:19:05.559,/api/item,0.44 
2017-01-19 12:19:05.585,/api/item,0.173 
2017-01-19 12:19:06.633,/api/sig,0.564 
2017-01-19 12:27:05.712,/api/sig,0.574 
2017-01-19 12:27:08.370,/api/sig,0.497 
2017-01-19 12:27:43.319,/api/sig,0.561 
2017-01-19 12:27:45.873,/api/sig,0.508 
2017-01-19 12:46:15.454,/api/sig,1.0 
2017-01-19 12:46:20.409,/api/item,0.173 
2017-01-19 12:46:20.427,/api/item,0.163 
2017-01-19 12:46:20.457,/api/item,0.169 
2017-01-19 12:46:20.474,/api/item,0.162 
2017-01-19 12:46:20.618,/api/item,0.209 
2017-01-19 12:46:20.642,/api/item,0.172 
2017-01-19 12:46:20.695,/api/item,0.26 
2017-01-19 12:46:20.698,/api/item,0.193 
2017-01-19 12:46:20.788,/api/item,0.193 
2017-01-19 12:46:20.822,/api/item,0.232 
2017-01-19 12:46:20.873,/api/item,0.164 
2017-01-19 12:46:20.875,/api/item,0.142 
2017-01-19 12:46:20.905,/api/item,0.356 
2017-01-19 12:46:20.998,/api/item,0.199 

타임 스탬프 ts_send는 밀리 초 precission입니다. 이벤트가 기록되지 않은 시간이 있고 1 밀리 초에 여러 이벤트가있는 경우가 있습니다.

+0

'int'을해야 window' 문서화 문자열'에 따르면 당신은'DatetimeIndex'을 (그렇지)이없는 경우. – Goyo

+0

필자는 아래의 @Bouds 제안과 유사하다고 생각되는'd2.index = pd.DatetimeIndex (d2.ts_send, inplace = True) '를 명시 적으로 적용 해 보았습니다. 'ValueError : 인덱스는 단조롭다. '라는 예외를 발생시킵니다. – numibialainen

답변

0

시계열이 색인 인 경우 작동합니다. 나는 전진 할 수 있었다 종류의 회원 Boud 및 Goyo에

d2.set_index('ts_send', inplace=True) 
+0

팁을 주셔서 감사합니다! 불행히도 그것은 나를 위해 작동하지 않았다. 나는 ValueError를 가지고 있습니다 : 인덱스는 단조로워 야합니다. – numibialainen

+0

질문 : '단조로운'의 의미를 이해합니까? – Boud

+0

나는 지금까지하지 않았다. 그래서, 그것은 단조롭지 않습니다. 현재 색인을 단조롭게 만들거나 변환하는 방법을 살펴볼 것입니다. – numibialainen

0

감사합니다 : 당신은 당신의 코드를 실행하기 전에이 추가.

코드는 내가 필요로 무엇을 생산 :

d2 = pd.read_csv(input_file, delimiter=",") 
d2["ts_send"] = pd.to_datetime(d2["ts_send"], format="%Y-%m-%d %H:%M:%S.%f", exact=True, utc=True) 
d2.index = pd.DatetimeIndex(d2.ts_send, inplace=True) 
d3 = d2.sort_index() 
d3.drop(d3.columns[0],axis=1,inplace=True) 

print (d3.index.is_monotonic_increasing) 
print (d3.head()) 

print (d3.rolling("5s", min_periods=1).mean()) 
print (d3.rolling("5s", min_periods=1).std()) 
print (d3.rolling("5s", min_periods=1).min()) 
print (d3.rolling("5s", min_periods=1).max())