개발은 처음이라 개발새발

파이썬 날짜 인덱스 활용 - 시계열 데이터 활용2 [python/pandas] 본문

파이썬/판다스

파이썬 날짜 인덱스 활용 - 시계열 데이터 활용2 [python/pandas]

leon_choi 2022. 8. 12. 12:25
반응형

이번 시간엔는 timestamp와 period를 가지고 인덱스로 활용하는 방법에 대해서 알아보겠습니다. 두가지를 인덱스로 활용하게 되면 기간별로 데이터를 분석하는 데 있어 굉장히 용이하겠죠? 기간별로 데이터를 분류하고 분석하는 것은 어찌보면 데이터분석에 있어 가장 많이 활용되고 기본적인 것이니 알아둔다면 도움이 많이 될 것으로 보입니다. 그렇다면 바로 코딩을 살펴보겠습니다. 인덱스로 지정하는 것은 그동안 많이 사용된 df.set_index()함수를 활용하면 됩니다.

import pandas as pd
                        
df = pd.read_csv('stock-data.csv')

#Date 타입 변경
df['new_date'] = pd.to_datetime(df['Date'])
df.set_index('new_date', inplace=True)
print(df.head(),'\n')
print(df.index,'\n')
               Date  Close  Start   High    Low  Volume
new_date
2018-07-02  2018-07-02  10100  10850  10900  10000  137977
2018-06-29  2018-06-29  10700  10550  10900   9990  170253
2018-06-28  2018-06-28  10400  10900  10950  10150  155769
2018-06-27  2018-06-27  10900  10800  11050  10500  133548
2018-06-26  2018-06-26  10800  10900  11000  10700   63039 

DatetimeIndex(['2018-07-02', '2018-06-29', '2018-06-28', '2018-06-27',
               '2018-06-26', '2018-06-25', '2018-06-22', '2018-06-21',
               '2018-06-20', '2018-06-19', '2018-06-18', '2018-06-15',
               '2018-06-14', '2018-06-12', '2018-06-11', '2018-06-08',
               '2018-06-07', '2018-06-05', '2018-06-04', '2018-06-01'],
              dtype='datetime64[ns]', name='new_date', freq=None)

네 이렇게 인덱스로 변환했더니 DatetimeIndex라는 속성으로 변환된 것을 확인할 수 있습니다. 이를 가지고 데이터를 추출해볼건데요. 날짜 인덱스의 장점은 연도, 월, 일자 중에서 본인이 필요로 하는 것을 선택적으로 인덱싱할 수 있다는 것입니다. 그리고 날짜 범위로도 슬라이싱이 가능합니다. 코딩을 통해 예시를 살펴보겠습니다.

#Date 컬럼 지우기
df= df.drop(['Date'], axis='columns')

#날짜 인덱스를 이용해 데이터 선택하기
df_y = df['2018']
print(df_y.head(),'\n')

df_ym = df.loc['2018-07']
print(df_ym.head(),'\n')

df_ym_cols = df.loc['2018-07','Start':'High']
print(df_ym_cols.head(),'\n')

df_ymd = df['2018-07-02']
print(df_ymd.head(),'\n')

df_ymd_range = df['2018-06-19':'2018-06-25']
print(df_ymd_range,'\n')
  Close  Start   High    Low  Volume
new_date
2018-07-02  10100  10850  10900  10000  137977
2018-06-29  10700  10550  10900   9990  170253
2018-06-28  10400  10900  10950  10150  155769
2018-06-27  10900  10800  11050  10500  133548
2018-06-26  10800  10900  11000  10700   63039

            Close  Start   High    Low  Volume
new_date
2018-07-02  10100  10850  10900  10000  137977

            Start   High
new_date
2018-07-02  10850  10900

            Close  Start   High    Low  Volume
new_date
2018-07-02  10100  10850  10900  10000  137977

            Close  Start   High    Low  Volume
new_date
2018-06-25  11150  11400  11450  11000   55519
2018-06-22  11300  11250  11450  10750  134805
2018-06-21  11200  11350  11750  11200  133002
2018-06-20  11550  11200  11600  10900  308596

네 이렇게 데이터들을 날짜 인덱스를 활용해 추출해봤습니다. 저는 업무상 스포츠데이터를 많이 다루기 때문에 무엇보다 기간과 날짜별로 분류하고 분석하는 것을 자주 사용하는데요. 공부하면서 굉장히 유용하게 써먹을 수 있겠다는 생각이 들었던 파트입니다. 이 글을 보신 분들도 분석에 있어 유용하게 사용하시길 바라겠습니다. 

반응형