날짜와 시간을 위한 데이터 타입 설정하기
기본 데이터 불러오기
데이터프레임의 데이터타입을 확인해본다.
order_time과 shiping_time이 오브젝트로 되어 있다.
to_datetime()
판다스에는 데이트함수 타입으로 바꾸는 함수가 있다.
order_time과 shiping_time의 데이터 타입을 바꿔서 저장해주고 결과를 확인하면 타입이 바뀐 것을 볼 수 있다.
처음부터 데이터타입을 지정해서 불러올수도 있다.
현재 데이터프레임을 보면 결측값이 하나 있다.
결측값이 더 없는지 확인해보니 1개만 있다.
1개만 있으니까 그냥 지워준다.
dt.date
원하는 날짜, 연도, 월, 일, 시간, 분, 초, 요일 등 불러올 수 있다.
이때 문자열엔 str을 쓴 것처럼 dt를 써준다.
dayofweek는 요일을 의미한다. 0 월요일 1 화요일 ... 6 일요일
노트
order_df['order_time'] = pd.to_datetime(order_df['order_time'], yearfirst=True)
order_df['shipping_time'] = pd.to_datetime(order_df['shipping_time'], yearfirst=True)
order_df.head()
order_df['order_time'] = pd.to_datetime(order_df['order_time'], format='%Y년 %m월 %d일 %H시 %M분 %S초')
order_df['shipping_time'] = pd.to_datetime(order_df['shipping_time'], format='%Y년 %m월 %d일 %H시 %M분 %S초')
order_df.head()
order_df['order_time'] = order_df['order_time'].dt.strftime('%d %b %Y, %I:%M %p')
order_df['shipping_time'] = order_df['shipping_time'].dt.strftime('%d %b %Y, %I:%M %p')
order_df.head()
order_df['order_time'].dt.tz_localize('Asia/Seoul')
order_df['order_time'] = order_df['order_time'].dt.tz_localize('Asia/Seoul')
order_df['shipping_time'] = order_df['shipping_time'].dt.tz_localize('Asia/Seoul')
order_df['order_time'].dt.tz_convert('America/New_York')
날짜와 시간 데이터 인덱싱하기
set_index()
order_time을 인덱스로 바꿔주고, 오름차순으로 정렬해준다.
sort_index()
이때 인덱스를 정렬할 때는 sort_index() 함수를 써준다.
2015년 값만 가져오고 싶은데, 하나하나 가져와야될까?
.loc[]
데이트타임 타입은 2015만 입력해도 가져온다.
부분적으로 일치하는 항목도 인덱싱해준다.
원하는대로 부분인덱싱이 가능하다
loc의 경우 2015부터 2016이 아닌 2017까지 다 가져온다.
실습 1
import pandas as pd
delivery_df = pd.read_csv('data/delivery.csv')
# 여기에 코드를 작성하세요.
delivery_df['order_time'] = pd.to_datetime(delivery_df['order_time'])
delivery_df = delivery_df.set_index('order_time')
delivery_df.loc['2022-10-17']
날짜와 시간을 더하고 빼기
기본 데이터
배송 도착일에서 주문일을 빼서 실제로 배송 기간이 얼마나 걸렸는지 찾는다.
이를 새로운 컬럼을 만들어서 저장해준다. (실제 배송 소요일)
예상 배송 소요일과 실제 배송 소요일을 비교하기 위해 타입을 동일하게 맞춰준다.
이때 예상 배송 소요일의 타입을 바꿔줬다.
to_timedelta()
타임델타라는 데이터타입은 나노초까지 보여주기 때문에 단위가 안 맞아서 unit이라는 파라미터를 사용해 날짜로 지정해줬다.
이를 원래 있던 예상 배송 소요일 컬럼에 저장하고
확인해보면 똑같은 데이터타입으로 바뀐 것을 볼 수 있다.
그리고 예상 배송 소요일과 실제 소요일을 비교하여 새로운 컬럼을 만들어 저장해준다.
실제 true가 몇건인지 확인할 수도 있고,
어떤 건들이 늦었는지 데이터프레임으로 확인할 수도 있다.
실습 1
delivery_df['time_taken'] = pd.to_timedelta(delivery_df['time_taken'], unit='T')
delivery_df['delivery_time'] = delivery_df['order_time'] + delivery_df['time_taken']
delivery_df
코드잇 17. 날짜와 시간 데이터 다루기
'마케팅 > 데이터 분석' 카테고리의 다른 글
[파이썬] 그룹별로 분석하기 (0) | 2025.03.14 |
---|---|
[파이썬] 데이터 합치기 (0) | 2025.03.14 |
[파이썬] 숫자 데이터 가공하기 (0) | 2025.03.14 |
[파이썬] 문자 데이터 가공하기 (0) | 2025.03.13 |
[파이썬] 데이터 다듬기 (0) | 2025.03.13 |