꾸준하고 즐겁게

Pandas의 datetime Index와 resample 본문

Language/Pandas

Pandas의 datetime Index와 resample

wj9183 2021. 5. 2. 21:34
728x90

데이터셋을 하나 다운로드 받아서 가지고 놀고 있다.

마침 적당하다는 생각이 들어서, 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

 

datetime — Basic date and time types — Python 3.9.4 documentation

datetime — Basic date and time types Source code: Lib/datetime.py The datetime module supplies classes for manipulating dates and times. While date and time arithmetic is supported, the focus of the implementation is on efficient attribute extraction for

docs.python.org

 

 

 

날짜와 시간이 들어있는 컬럼을 보면, 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를 사용할 때와 비슷하지만 더욱 간결하고 편리하다.

월별로, 일 별로, 묶고 싶은 기준을 바꾸고 싶다면 아래 표를 참조하면 된다.

 

 

 

 

 

 

이번엔 월별로 묶어서, 차트를 그려봤다.

 

 

 

 

날짜별로도 묶어서 차트를 그려보았다.

 

 

 

 

728x90