1 minute read

Pandas Parsing Dates

import pandas as pd
import seaborn as sns
df = pd.DataFrame({'Date':['3/2/07','3/22/07','4/6/07','4/14/07','4/15/07']})
df
  Date
0 3/2/07
1 3/22/07
2 4/6/07
3 4/14/07
4 4/15/07
df.Date
0     3/2/07
1    3/22/07
2     4/6/07
3    4/14/07
4    4/15/07
Name: Date, dtype: object

Date 열을 살펴보니 날짜로 표현되어 있습니다. 하지만 Python이 이 데이터가 날짜라는 것을 알고 있을까요? 데이터의 유형을 보면 “object”임을 알 수 있습니다. Pandas의 dtype 문서를 확인해보면 datetime64 dtype도 있음을 알 수 있습니다. 열의 dtype이 object이기 때문에 Python이 이 열에 날짜가 포함되어 있다는 것을 알지 못합니다.

그럼, Date컬럼을 datetime형식으로 변환해볼까요? strftime 지시문 이라는 가이드를 통해 날짜 형식이 무엇인지 알 수 있습니다. 날짜의 가능한 부분이 많이 있지만 가장 일반적인 부분은 일의 경우 %d, 월의 경우 %m, 두 자리 연도의 경우 %y, 네 자리 연도의 경우 %Y입니다.

Some examples:

  • 1/17/07의 포맷은 “%m/%d/%y”
  • 17-1-2007의 포맷은 “%d-%m-%Y”
df['date_parsed'] = pd.to_datetime(df.Date, format="%m/%d/%y")
df
  Date date_parsed
0 3/2/07 2007-03-02
1 3/22/07 2007-03-22
2 4/6/07 2007-04-06
3 4/14/07 2007-04-14
4 4/15/07 2007-04-15
df['date_parsed'].head()
0   2007-03-02
1   2007-03-22
2   2007-04-06
3   2007-04-14
4   2007-04-15
Name: date_parsed, dtype: datetime64[ns]

새 열의 행을 확인하면 dtype이 datetime64임을 알 수 있습니다. 또한 날짜가 (년-월-일)에 맞도록 약간 재정렬 된 것을 볼 수 있습니다.


파싱 된 날짜 열이 있으므로 날짜와 같은 정보를 추출 할 수 있습니다.

day_df = df['date_parsed'].dt.day
day_df
0     2
1    22
2     6
3    14
4    15
Name: date_parsed, dtype: int64

layout: default comments: true

other options


Comments