🐼 판다스/Pandas 함수

🐼 Pandas 06. pd.to_datetime( ) 함수

nyamin9 2023. 1. 14. 02:46

모바일은 화면을 돌려 가로화면으로 보시는 게 읽으시기 편할 수 있습니다. 돌려서 보시는 걸 추천드릴게요!!

 

 


📝 목차

1. pd.to_datetime( ) 기본 모양

2. month.day 형태의 데이터가 있는 경우

3. year, month, day 가 각각의 column인 경우

 


🐼 이번 포스팅에서는 시계열 분석을 위해 알아야 할 시간 관련 함수  pd.to_datetime( ) 에 대해서 알아보겠습니다.

 

🐼 처리 기준은  year - month - day 의 형태입니다.

 


1. pd.to_datetime( ) 기본 모양


🐼  pd.to_datetime(series, format, errors) 

 

  1. 처음 들어가는 인수인 series 는 데이터 처리 과정에서 datetime 형태로 바꾸려고 하는 열을 선언합니다.
  2. 두번째 인수 format은 datetime의 원하는 모양을 지정해줍니다.
    • %y : 년도 (2자리) - 99, 00, 01 ...
    • %Y : 년도 (4자리) - 1999, 2000 ...
    • %m : 월 - 05, 08 ...
    • %d : 날짜 (2자리) - 07, 15, 21 ...
    • %H : 시간 (24시간) - 15, 18, 23 ...
    • %I : 시간 (12시간) - 3, 6, 11 ...
    • %M : 분 (2자리) - 23, 56 ...
    • %S : 초 (2자리) - 36, 59 ...
    • %a : 요일 (짧은 이름) - Mon, Tue, Wed ...
    • %A : 요일 (긴 이름) - Monday, Tuesday, Wendsday ...
    • %w : 요일 (숫자 / 0이 일요일, 1이 월요일) - 0, 1, 2 ...
    • %b : 월 (짧은 이름) - Jan, Feb ...
    • %B : 월 (긴 이름) - January, Febrary ...
  3. 마지막 인수 errors 는 오류를 불러일으킬지 결정하는 인수인데, 보통 errors = 'raise' 의 형태로 사용합니다.

 


2. month.day 형태의 데이터가 있는 경우


🐼 month 와 day가 ⚪.⚪ 의 형태로 되어있다고 가정해 봅시다. 즉 아래 형태의 데이터프레임이 있는 것입니다.

>>

month-day     col1    col2

2.26      	A       1
2.27      	B       3
3.05      	A       2

이런 경우에는 df ['month-day'].str.replace(".", "-")  형태로 지정해서 month-day 같은 꼴로 만들어줍니다.


그 다음 pd.to_datetime('2022-" + df ['month-day'], errors='raise') 를 선언해줍시다.

 

그러면 우리가 원하는 2022-02-26 같은 datetime column 이 생길 것입니다🙂.

 

 

🐼 전체 코드는 다음과 같습니다.

df['month-day'] = df['month-day'].str.replace(".", "-")
df['date'] = df.to_datetime("2022-" + df['month-day'], errors = 'raise')
df
>>

month-day     col1    col2       date

2.26      	A       1     2022-02-26
2.27      	B       3     2022-02-27
3.05      	A       2     2022-03-05

 


3. year, month, day 가 모두 각각의 column인 경우


🐼 아래와 같은 데이터를 가정해봅시다.

>>

year    month   day

2022    02      26
2022    02      27
2022    03      05

가장 먼저 할 일은 각 열의 데이터들이 str 자료형인지 확인하는 것입니다.

 

만약 다른 지료형이면 df.astype('str') 을 사용해서 먼저 각 데이터들을 str 형태로 바꿔줍시다.

 

그 다음에는  pd.to_datetime(df['year'] + '-' + df ['month'] + '-' + df ['day'], errors = 'raise' ) 를 선언해주면 됩니다.

 

 

🐼 전체 코드는 아래와 같습니다.

df = df.astpe('str)
df['date] = df.to_datetime(df['year'] + '-' + df['month'] + '-' + df['day'], errors = 'raise')
df
>>

year    month   day     date

2022    02      26      2022-02-26
2022    02      27      2022-02-27
2022    03      05      2022-03-05

 


🐼 가장 중요한 점은 합칠 데이터의 형태가 반드시 str 형태여야 한다는 점입니다. 대부분의 시계열 데이터들은 int 자료형일 가능성이 높기 때문에 . info( ) 함수 등을 사용해서 자료형을 알아보고, 미리 변경하는 것이 좋을 것 같습니다. 이렇게 변경한 데이터프레임의 다른 데이터들은 당연히 원상복구 해주는 편이 좋습니다👍. 뒤에 있을 남은 전처리 과정을 꼭 생각해줍시다!!