Recent Posts
Recent Comments
Archives
반응형
250x250
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Yesterday

Total
05-03 01:47
관리 메뉴

Hey Tech

[Python] 숫자형/문자열 데이터를 날짜형으로 바꾸기(pd.to_datetime) 본문

AI & 빅데이터/데이터 분석 with Python

[Python] 숫자형/문자열 데이터를 날짜형으로 바꾸기(pd.to_datetime)

Tony Park 2022. 8. 16. 23:57
728x90
반응형

📌 목표

  • 숫자형 데이터를 날짜 형태로(i.e., datetime) 변환하기
  • 예시: 20220816 (int) 👉 2022-08-16 (datetime object)

🗂 목차

1.  데이터셋 예시
2.  데이터 타입 변경
3.  코드 뜯어보기

📝 데이터셋 예시

파이썬의 pandas 패키지를 활용하겠습니다.

import pandas as pd

아래의 그림 1과 같이, 고객 ID, 리뷰 등록일, 텍스트 데이터가 담긴 데이터셋이 있습니다.

그림 1. 데이터셋 일부

칼럼별 데이터 타입을 확인해 봅니다.

그림 2. 칼럼별 데이터 타입 확인

위의 그림 2와 같이, date 칼럼이 정수형인 것을 확인하실 수 있습니다.

💡 데이터 타입 변경

이제 date 칼럼을 datetime 형태로 변환해 보겠습니다.

🛠 코드

DATASET['datetime'] = DATASET['date'].apply(lambda x: pd.to_datetime(str(x), format='%Y-%m-%d'))

위의 코드 한 줄로 날짜형 데이터로 변환이 가능합니다.

👏 결과

그림 3. 데이터 타입 변경 결과

위의 그림 3과 같이, '년-월-일' 포맷에, datetime 타입을 가진 칼럼을 생성하였습니다.

📚 코드 뜯어보기

어떤 함수를 사용했는지 코드를 자세히 살펴보겠습니다.

DATASET['datetime'] = DATASET['date'].apply(lambda x: pd.to_datetime(str(x), format='%Y-%m-%d'))

1) apply 함수

apply 함수는 사용자가 원하는 함수를 데이터프레임에 한 번에 적용할 때 사용합니다. 구문은 아래와 같습니다.

[데이터프레임].apply([적용 함수], axis = 0 또는 1) # axis 기본값: 0

apply 기준

  • 좌측: 활용할 데이터프레임 입력
  • 우측
    • 적용할 함수
    • axis
      • 0: column 방향 (기본값)
      • 1: row 방향

(예시) 칼럼 내 데이터 제곱

DATASET['rating'].apply(np.square, axis = 0)

(결과) 그림 4

그림 4. apply 함수 기반 데이터 제곱 결과

2) pd.to_datetime 함수

pd.to_datetime 함수는 문자열 데이터를 datetime 타입으로 변환합니다.

pd.to_datetime(문자열, format='%Y-%m-%d')

위와 같이, 문자열을 앞에 입력하고 변환할 format 형태를 입력해 주면 됩니다.

  • y: 연도
  • m: 월
  • d: 일

알파벳의 대문자/소문자 여부에 따라 표시되는 값 형태가 다르기 때문에, 원하시는 데이터 포맷에 맞게 알파벳을 변경하여 사용하시길 바랍니다.

3) lambda 함수

lambda 함수는 일회성으로, 간결한 함수를 만들 때 주로 사용합니다. 아래와 같이 특정 값을 넘겨주면 제곱하여 반환하는 함수가 있다고 해 보겠습니다.

def square(input_date):
   return input_data**2

res = square(7)
print(res) # 49 출력

함수를 정의하여 만들기에는 메모리 낭비도 유발하고 실효성이 떨어져 보입니다.

이럴 때 lambda를 사용하면 유용합니다. 위의 코드는 lambda를 사용하면 아래와 같이 작성할 수 있습니다.

res = lambda(x: x**2)
print(res(7)) # 49 출력

res는 매개변수는 x이고, 이 x를 제곱한 값을 저장합니다.


포스팅 내용에 오류가 있다면 아래에 👇👇👇 댓글 남겨주시면 감사드리겠습니다. 

그럼 오늘도 즐겁고 건강한 하루 보내시길 바랍니다 :)

고맙습니다.

728x90
반응형
Comments