꾸준하고 즐겁게
Pandas의 datetime Index와 resample 본문
데이터셋을 하나 다운로드 받아서 가지고 놀고 있다.
마침 적당하다는 생각이 들어서, pandas의 datetime index와 resample에 대해 알아보려고 한다.
Pandas의 to_datetime 함수 사용법
csv 파일을 불러와 EDA 작업을 진행하고, 필요한 Data preprocessing을 하는 중이다.
이 과정에서 특정 시간대의 데이터만을 확인하고 싶다.
그런데 날짜와 시간이 들어가있는 컬럼의 데이터 타입을 확인해보니, 문자열로 나온다.
이 문자열을 python이 알아들을 수 있는 시간으로 바꿔줘야 한다.
이때 Pandas의 to_datetime 함수가 필요하다.
아래는 to_datetime 함수의 레퍼런스다.
docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
날짜와 시간이 들어있는 컬럼을 보면, 2021년 04월 27일 09시와 같은 형태로 되어있다.
format에 이렇게 데이터에 있는 형식 그대로 작성해주면 된다.
컬럼의 데이터 타입이 datetime64으로 바뀐 것을 확인해볼 수 있다.
이제 stdDay 컬럼을 이 데이터프레임의 index로 바꿔주겠다.
이미 늦었지만 글자가 너무 작다 싶어서 이미지를 잘라왔다.
아무튼 잘 바뀌었다.
필요없어진 stdDay 컬럼을 지워주겠다.
잘 지워졌다.
Datetime을 인덱스로 쓰면 좋은 점은, 데이터에 없는 날짜를 써도 슬라이싱을 할 수 있다는 점이다.
한 번 해보겠다.
이 글이 쓰여지는 현재 5월 2일이고, 데이터는 4월 27일까지의 데이터가 있는데 6월 30일까지 슬라이싱했다.
또한 시간은 아예 입력하지 않았다.
하지만 정상적으로 데이터를 가져온 것을 볼 수 있다.
Datetime index를 쓰면 Facebook의 Prophet 라이브러리도 사용할 수 있게 되는데, 이건 다음 글에서 다뤄보기로 한다.
이어서 resample 함수에 대해 알아보겠다.
resample 함수의 사용
이 데이터프레임은 연도별로 몇 개의 데이터를 가지고 있을까.
resample 함수를 사용하면 간단하게 알아볼 수 있다.
위와 같이 코드를 작성하면 된다.
데이터프레임의 인덱스가 DatetimeIndex 형태가 되면, 우리는 resample() 함수를 사용할 수 있다.
resample() 함수는 groupby를 사용할 때와 비슷하지만 더욱 간결하고 편리하다.
월별로, 일 별로, 묶고 싶은 기준을 바꾸고 싶다면 아래 표를 참조하면 된다.
이번엔 월별로 묶어서, 차트를 그려봤다.
날짜별로도 묶어서 차트를 그려보았다.