판다스 데이터프레임에서 날짜와 시간 형식으로 바꾸고 계산하기

2019. 5. 14. 06:35

사람은 반복적으로 자주 하는 것은 쉽게 기억하지만, 가끔 하는 것은 잘 기억하지 못한다. 판다스 데이터 프레임에서 날짜와 시간을 다루는 것도 자주 하지 않기 때문에 할 때마다 찾아보게 된다. 그래서 판다스 데이터 프레임에서 날자와 시간을 다루는 방법을 정리해보고자 한다.

오늘은 판다스 데이터프레임에서 날짜와 시간을 다루는 방법에 대해서 알아보도록 하겠다.


판다스_날짜_시간



숫자와 문자형의 데이터 타입으로 모든 작업을 할 수 있으면 좋곘지만, 날짜와 시간의 특수성으로 해당 데이터 타입이 필요할 때가 있다. 날짜와 시간 데이터 타입을 만드는 방법과 계산하는 방법을 차례대로 알아보도록 하겠다.


1. 날짜와 시간 만들기

데이터 프레임에 숫자나 문자로 날짜가 있다면, 이 데이터를 이용해서 날짜와 시간 형식의 데이터를 만들 수 있다. 먼저 "2019-05-13"과 같은 문자열로 만들고, asttype("datetime~")을 이용하면 datetime형식으로 만들 수 있다.


> import pandas as pd


> df = pd.DataFrame(data=[20161011, 20171013, 20181031], columns=["d"])

> df["d"] = df["d"].astype(str)


> df["date"] = df["d"].str[0:4] + "-" + df["d"].str[4:6] + "-" + df["d"].str[6:8]


> df["date"] = df["date"].astype('datetime64[ns]')


날짜와 시간을 만들 수 있는 값이 없다면, 새로 만드는 것도 가능하다. date_range나 period_range함수를 이용하면 특정기간에 대해 일정한 간격으로 데이터를 만들 수 있다.


> pd.Series(pd.date_range('2000', freq='D', periods=3))

> pd.Series(pd.date_range('1/1/2011', freq='M', periods=3))

> pd.Series(pd.period_range('1/1/2011', freq='M', periods=3))



2. 날짜와 시간 계산하기

날자와 시간은 그 특수성 떄문에 숫자로 계산하는 것이 쉽지 않다. 우리가 쉽게 생각하는 연초, 연말과 같은 개념도 숫자로 계산하려면 복잡해진다. 판다스에는 다행히 이러한 내용들이 미리 정의가 되어 있다.


1) 날짜와 시간 더하거나 빼기

날짜와 시간을 더하거나 뺄때는 DateOffset함수를 이용한다. DateOffset함수의 입력인자로 원하는 기간을 입력하는 것이다. 예를 들면 아래와 같다.


> df["date_1m"] = df["date"] + pd.DateOffset(months=1)

> df["date_1d"] = df["date"] + pd.DateOffset(days=1)

> df["date_1y"] = df["date"] + pd.DateOffset(years=1)



2) 필요한 날짜와 시간 정의 찾기

날짜와 시간에는 더하고 빼는 것 외에 특수한 작업들이 필요할 수 있다. 예를 들면 요일을 찾는다거나 월말, 몇 번째 주인지 등 쉽게 찾을 수 없는 값들이 많다. 


아래와 같은 날짜와 시간 속성에 사용할 수 있는 항목들이 있다. 사용할 때는 "데이터프레임명[칼럼명].dt.항목명" 과 같이 사용하면 된다.


> df["date].dt.year


위의 방법으로 사용할 수 있는 항목은 아래와 같다.


날짜_시간_property

( 날짜와 시간 Property )


이 외에도 DateOffset도 사용할 수 있다. 사용방법은 아래와 같다. 'pd.offsets.함수명'을 날짜에 더해주는 방식이다.


> df["date_wd"] = df["date"] + pd.offsets.weekday()


위의 방법으로 사용할 수 있는 항목들은 아래와 같다.


DateOffsets함수들

( DateOffsets 함수들 )


오늘은 이렇게 판다스 데이터프레임에서 날짜와 시간 데이터 타입으로 바꾸고 계산하는 방법에 대해서 알아보았다. 방법만 알면 어렵지는 않으나, 자주 사용하지 않다보니 헷갈리게 된다. 날짜와 시간을 계산해야 된다면 복잡하게 계산하지 말고, 위에 항목이나 함수들을 이용하면 쉽게 할 수 있을 것이다.


몇 가지 팁이나 방법을 알면 파이썬을 더 효율적으로 코딩할 수 있는 방법들이 있다. 자세한 내용이 궁금하다면, 아래 링크를 참조해보자.
( 참조: 파이썬 효율적인 코딩팁과 방법들 )


파이썬을 직접 활용하는 것만큼 효과적인 공부는 없다. 그래서 파이썬을 활용해서 할 수 있는 일드을 정리해보았다. 자세한 내용은 아래 포스팅을 참조해보자.
( 참조: 파이썬 활용, 파이썬 프로젝트로 할 수 있는 일들을 알아보자! )

댓글()