Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

인덱스 값을 기반으로 데이터프레임 시계열 데이터를 자르는 방법 – 판다스 truncate() 활용

시계열 데이터 자르기 개요

시계열(time series) 데이터가 포함된 데이터프레임이 있을 때, 판다스의 truncate() 함수를 사용하면 지정한 인덱스 값을 기준으로 데이터를 간단하게 잘라낼 수 있습니다. 예를 들어 아래와 같은 데이터프레임이 있고, 잘라낸 후의 결과가 다음과 같다고 가정해 보겠습니다.

before truncate:
 Id time_series
0 1 2020-01-05
1 2 2020-01-12
2 3 2020-01-19
3 4 2020-01-26
4 5 2020-02-02
5 6 2020-02-09
6 7 2020-02-16
7 8 2020-02-23
8 9 2020-03-01
9 10 2020-03-08

after truncate:
 Id time_series
1 2 2020-01-12

해결 방법

이 문제는 아래 단계를 따라 해결할 수 있습니다.

  • 데이터프레임 정의: Id 열을 가진 데이터프레임을 생성합니다.

  • 주간 날짜 생성: date_range 함수에 start='01/01/2020', periods=10을 지정하고 freq='W'를 설정합니다. 이렇게 하면 시작 날짜부터 일주일 간격의 열 개 날짜가 생성되어 df['time_series'] 열에 저장됩니다.

df['time_series'] = pd.date_range('01/01/2020',
                                  periods=10,
                                  freq='W')
  • truncate 적용: df.truncate() 함수에 before='01/01/2020', after='10/02/2020'이라는 인덱스 값을 넣어 호출하고, 그 결과를 result 변수에 저장합니다.

result = df.truncate(before='01/01/2020', after='10/02/2020')

예제

아래 전체 코드를 실행하면 위 과정을 한눈에 확인할 수 있습니다.

import pandas as pd
d = {'Id': [1,2,3,4,5,6,7,8,9,10]}
df = pd.DataFrame(d)
df['time_series'] = pd.date_range('01/01/2020',
                                  periods=10,
                                  freq='W')

print(df)
result = df.truncate(before='01/01/2020', after='10/02/2020')
print(result)

출력

before truncate:
 Id time_series
0 1 2020-01-05
1 2 2020-01-12
2 3 2020-01-19
3 4 2020-01-26
4 5 2020-02-02
5 6 2020-02-09
6 7 2020-02-16
7 8 2020-02-23
8 9 2020-03-01
9 10 2020-03-08

after truncate:
 Id time_series
1 2 2020-01-12

참고: truncate() 함수의 동작 원리

truncate()는 기본적으로 데이터프레임의 인덱스(index)를 기준으로 동작합니다. before로 지정한 값 이상, after로 지정한 값 이하의 인덱스만 남기고 나머지 행은 모두 제거됩니다. 날짜 문자열 대신 숫자 인덱스(예: before=1, after=5)를 사용할 수도 있으며, axis 인자를 조정하면 열(column) 기준으로도 데이터를 자를 수 있습니다.