2014-02-24 2 views
0

을 기리기 위해 pandas DataFrame.resample()이 필요합니다. pandas DataFrame.resample() 함수를 사용하여 1 분 빈도 시계열 데이터를 15 분 주파수로 다운 샘플링합니다. 원래 데이터는 동일한 분 - 주파수에 정렬 된 여러 개의 시계열로 구성되며 각 시리즈는 튜플 목록입니다. 각 튜플은 (<offset from start time>, <value>)으로 정의됩니다. DataFrame을 채우기 전에 이것을 (<datetime>, <value>)으로 변환합니다. 다음은 샘플 시계열은하위 기간 시리즈 시작 datetime

start = datetime(2014, 2, 24, 1, 6, 0, tzinfo=pytz.utc) 
min_ts = dict((start + timedelta(seconds=60) * t, random.randint(0,3)) for t in range(1, 30)) 

min_ts = 
{datetime.datetime(2014, 2, 24, 1, 7, tzinfo=<UTC>): 2, 
datetime.datetime(2014, 2, 24, 1, 8, tzinfo=<UTC>): 1, 
datetime.datetime(2014, 2, 24, 1, 9, tzinfo=<UTC>): 0, 
datetime.datetime(2014, 2, 24, 1, 10, tzinfo=<UTC>): 3, 
datetime.datetime(2014, 2, 24, 1, 11, tzinfo=<UTC>): 1, 
datetime.datetime(2014, 2, 24, 1, 12, tzinfo=<UTC>): 0, 
datetime.datetime(2014, 2, 24, 1, 13, tzinfo=<UTC>): 1, 
datetime.datetime(2014, 2, 24, 1, 14, tzinfo=<UTC>): 0, 
datetime.datetime(2014, 2, 24, 1, 15, tzinfo=<UTC>): 3, 
datetime.datetime(2014, 2, 24, 1, 16, tzinfo=<UTC>): 3, 
datetime.datetime(2014, 2, 24, 1, 17, tzinfo=<UTC>): 3, 
datetime.datetime(2014, 2, 24, 1, 18, tzinfo=<UTC>): 1, 
datetime.datetime(2014, 2, 24, 1, 19, tzinfo=<UTC>): 3, 
datetime.datetime(2014, 2, 24, 1, 20, tzinfo=<UTC>): 0, 
datetime.datetime(2014, 2, 24, 1, 21, tzinfo=<UTC>): 2, 
datetime.datetime(2014, 2, 24, 1, 22, tzinfo=<UTC>): 1, 
datetime.datetime(2014, 2, 24, 1, 23, tzinfo=<UTC>): 0, 
datetime.datetime(2014, 2, 24, 1, 24, tzinfo=<UTC>): 3, 
datetime.datetime(2014, 2, 24, 1, 25, tzinfo=<UTC>): 1, 
datetime.datetime(2014, 2, 24, 1, 26, tzinfo=<UTC>): 1, 
datetime.datetime(2014, 2, 24, 1, 27, tzinfo=<UTC>): 2, 
datetime.datetime(2014, 2, 24, 1, 28, tzinfo=<UTC>): 0, 
datetime.datetime(2014, 2, 24, 1, 29, tzinfo=<UTC>): 3, 
datetime.datetime(2014, 2, 24, 1, 30, tzinfo=<UTC>): 2, 
datetime.datetime(2014, 2, 24, 1, 31, tzinfo=<UTC>): 3, 
datetime.datetime(2014, 2, 24, 1, 32, tzinfo=<UTC>): 0, 
datetime.datetime(2014, 2, 24, 1, 33, tzinfo=<UTC>): 3, 
datetime.datetime(2014, 2, 24, 1, 34, tzinfo=<UTC>): 2, 
datetime.datetime(2014, 2, 24, 1, 35, tzinfo=<UTC>): 0} 

제가하는 데 문제는 내가 DataFrame 에이로드에 사이의 값을 합산하는 15 분 주파수 재 샘플을 실행할 때 DateTimeIndex 라벨이 내부에 강요한다는 것이다 - 시간 15 분 간격 (즉, 0, 15, 30, 45)하지만 내가 원했던 것은 원래의 시계열 DateTimeIndex (예 : datetime.datetime(2014, 2, 24, 1, 7, tzinfo=<UTC>)에서 시작)를 유지하는 것입니다. 내가 resample loffset DateTimeIndex에 기본 동작에 영향을 미치지 않는 인수를 사용하여 시도했지만 합계 값은 적절하게 변경되지 않습니다.

df = pd.DataFrame({'values': min_ts}) 
df.resample('15min', how='sum', label='right') 

df = 
DateTimeIndex     values 
-------------------------------------- 
2014-02-24 01:15:00+00:00 11 
2014-02-24 01:30:00+00:00 31 
2014-02-24 01:45:00+00:00 11 

내가 같이하는 결과가

df = 
DateTimeIndex     values 
-------------------------------------- 
2014-02-24 01:07:00+00:00 23 
2014-02-24 01:22:00+00:00 21 

입니다 원하는 것은

답변

1

(더 명확하게 원하는 반영 결과로 업데이트) (base, loffset를 사용 및/또는 left에 라벨을 전환 시도 이것은 당신과 다른 랜덤 씨앗을 사용합니다.)

In [17]: df.resample('15min', how='sum', label='right') 
Out[17]: 
          values 
2014-02-24 01:15:00+00:00  10 
2014-02-24 01:30:00+00:00  17 
2014-02-24 01:45:00+00:00  7 

[3 rows x 1 columns] 

In [18]: df.resample('15min', how='sum', label='right',base=7) 
Out[18]: 
          values 
2014-02-24 01:22:00+00:00  16 
2014-02-24 01:37:00+00:00  18 

[2 rows x 1 columns] 

In [19]: df.resample('15min', how='sum', label='left',base=7) 
Out[19]: 
          values 
2014-02-24 01:07:00+00:00  16 
2014-02-24 01:22:00+00:00  18 

[2 rows x 1 columns] 

In [21]: df.resample('15min', how='sum', label='right',loffset='7T') 
Out[21]: 
          values 
2014-02-24 01:22:00+00:00  10 
2014-02-24 01:37:00+00:00  17 
2014-02-24 01:52:00+00:00  7 

[3 rows x 1 columns] 

In [22]: df.resample('15min', how='sum', label='left',loffset='7T') 
Out[22]: 
          values 
2014-02-24 01:07:00+00:00  10 
2014-02-24 01:22:00+00:00  17 
2014-02-24 01:37:00+00:00  7 

[3 rows x 1 columns] 
+0

내가 필요한 것을 수행합니다. 고마워! – esroberts

+0

참고하시기 바랍니다. http://pandas-docs.github.io/pandas-docs-travis/timeseries.html#up-and-downsampling을 더 많은 예제/설명과 함께 펼치고 싶다면 /''base''/''loffset''은 많이 감사하겠습니다 .... pls는 요청을 제출 제출! – Jeff