Python/NumPy | Pandas

[Python] Pandas - 시계열 자료 다루기 1

비번변경 2023. 1. 6. 22:10

시계열 자료

인덱스가 날짜, 시간이 데이터를 시계열 자료라고 한다. Pandas에서 시계열 자료를 생성하기 위해서는 특정한 순간에 기록된 타임스탬프 형식의 자료를 다루기 위한 DatetimeIndex 자료형으로 만들어야 한다. 인덱스인 타임스탬프가 일정한 간격일 필요는 없다.

 

DatetimeIndex는 아래와 같은 함수를 이용해 생성한다.

to_datetime

날짜, 시간을 나타내는 문자열을 datetime 자료형으로 변환한 뒤 Datetimeindex를 생성한다.

date_str = ["2018, 1, 1", "2018, 1, 4", "2018, 1, 5", "2018, 1, 6"]
idx = pd.to_datetime(date_str)
idx

# 실행 결과
DatetimeIndex(['2018-01-01', '2018-01-04', '2018-01-05', '2018-01-06'], dtype='datetime64[ns]', freq=None)

생성한 인덱스를 이용해 Series, DataFrame을 생성할 수 있다.

np.random.seed(0)
s = pd.Series(np.random.randn(4), index=idx)
s

# 실행 결과
2018-01-01    1.764052
2018-01-04    0.400157
2018-01-05    0.978738
2018-01-06    2.240893
dtype: float64

 

date_range

시작일과 종료일, 시작일과 기간을 입력하면 범위 내의 DatetimeIndex를 생성해 준다.

pd.date_range("2018-4-1", "2018-4-10")
pd.date_range("2018-4-1", periods=10)

# 실행 결과
DatetimeIndex(['2018-04-01', '2018-04-02', '2018-04-03', '2018-04-04',
               '2018-04-05', '2018-04-06', '2018-04-07', '2018-04-08',
               '2018-04-09', '2018-04-10'],
              dtype='datetime64[ns]', freq='D')
              
DatetimeIndex(['2018-04-01', '2018-04-02', '2018-04-03', '2018-04-04',
               '2018-04-05', '2018-04-06', '2018-04-07', '2018-04-08',
               '2018-04-09', '2018-04-10'],
              dtype='datetime64[ns]', freq='D')

 

freq 매개변수로 특정 날짜만 생성되도록 할 수 있다.

freq  의미
s
T
H 시간
D
B 평일
W
W-MON
M 각 달의 마지막날
MS 각 달의 첫날
BM 평일 중 각 달의 마지막 날
BMS 평읠 중 각 달의 첫날

그 외 : DateOffset objects

 

 

shift

shift 함수를 이용하면 인덱스는 두고 데이터만 이동시킬 수 있다.

np.random.seed(0)
ts = pd.Series(np.random.randn(4), index=pd.date_range(
    "2018-1-1", periods=4, freq="M"))
ts
ts.shift(1)

# 실행 결과
2018-01-31    1.764052
2018-02-28    0.400157
2018-03-31    0.978738
2018-04-30    2.240893
Freq: M, dtype: float64

2018-01-31         NaN
2018-02-28    1.764052
2018-03-31    0.400157
2018-04-30    0.978738
Freq: M, dtype: float64

 

 

 

참고 문서

데이터 사이언스 스쿨 - 4.8 시계열 자료 다루기