728x90
[Pandas] 데이터프레임에서 날짜와 시간 다루기
판다스 데이터프레임에서 날짜와 시간을 포함한 데이터를 처리하는 방법에 대해서 알아보고자 한다.
날짜와 시간 데이터 변환하기
날짜와 시간 정보가 함께 있는 데이터는 to_datetime 함수를 사용하여 datetime 형식으로 변환할 수 있다.
import pandas as pd
data = {
'event': ['A', 'B', 'C'],
'datetime': ['2023-08-01 14:30:00', '2023-08-05 09:15:00', '2023-08-10 18:45:00']
}
df = pd.DataFrame(data)
# 문자열을 날짜 및 시간으로 변환
df['datetime'] = pd.to_datetime(df['datetime'])
print(df)
print(df.dtypes)
다음과 같이 datetime 열이 datetime64[ns] 형식으로 변환 된 것을 확인할 수 있다.
event datetime
0 A 2024-08-01 14:30:00
1 B 2024-08-05 09:15:00
2 C 2024-08-10 18:45:00
event object
datetime datetime64[ns]
dtype: object
날짜와 시간 분리하기
날짜와 시간이 모두 포함된 데이터에서 날짜와 시간을 각각 분리하여 사용할 수 있다.
# 날짜 추출
df['date'] = df['datetime'].dt.date
# 시간 추출
df['time'] = df['datetime'].dt.time
print(df)
다음과 같이 date와 time열에 날짜와 시간이 각각 분리되어 저장된 것을 볼 수 있다.
# 출력 결과
event datetime date time
0 A 2023-08-01 14:30:00 2023-08-01 14:30:00
1 B 2023-08-05 09:15:00 2023-08-05 09:15:00
2 C 2023-08-10 18:45:00 2023-08-10 18:45:00
날짜와 시간에서 개별 요소 추출하기
날짜와 시간에서 연도, 월, 일, 시, 분, 초 등의 개별 요소를 추출할 수 있다.
# 연도 추출
df['year'] = df['datetime'].dt.year
# 월 추출
df['month'] = df['datetime'].dt.month
# 일 추출
df['day'] = df['datetime'].dt.day
# 시각 추출
df['hour'] = df['datetime'].dt.hour
# 분 추출
df['minute'] = df['datetime'].dt.minute
# 초 추출
df['second'] = df['datetime'].dt.second
print(df)
# 출력 결과
event datetime date time year month day hour minute second
0 A 2023-08-01 14:30:00 2023-08-01 14:30:00 2023 8 1 14 30 0
1 B 2023-08-05 09:15:00 2023-08-05 09:15:00 2023 8 5 9 15 0
2 C 2023-08-10 18:45:00 2023-08-10 18:45:00 2023 8 10 18 45 0
시간 연산하기
시간 간격을 계산하거나, 더하고 빼는 연산도 많이 사용된다.
# 시간 간격 계산
df['time_since'] = df['datetime'] - pd.to_datetime('2023-08-01 12:00:00')
# 시간 더하기
df['next_hour'] = df['datetime'] + pd.Timedelta(hours=1)
print(df)
time_since 열은 기준 시간(2023-08-01 12:00:00)으로부터 경과한 시간을 계산한 결과를,
next_hour 열은 기존 시간에 1시간을 더한 결과를 보여준다.
# 출력 결과
event datetime date time year month day hour minute second time_since next_hour
0 A 2023-08-01 14:30:00 2023-08-01 14:30:00 2023 8 1 14 30 0 2:30:00 2023-08-01 15:30:00
1 B 2023-08-05 09:15:00 2023-08-05 09:15:00 2023 8 5 9 15 0 4 days 21:15:00 2023-08-05 10:15:00
2 C 2023-08-10 18:45:00 2023-08-10 18:45:00 2023 8 10 18 45 0 9 days 6:45:00 2023-08-10 19:45:00
시간 단위로 그룹화하기
시간 단위로 데이터를 그룹화하여 특정 시간대별로 데이터를 분석할 수 있다.
예를 들어, 하루 중 각 시간대별로 이벤트 수를 세어보는 등의 활용이 가능하다.
# 시간 단위로 그룹화하여 이벤트 수 세기
hourly_counts = df.groupby(df['datetime'].dt.hour).size().reset_index(name='count')
print(hourly_counts)
해당 결과는 하루 중 오전 9시, 오후 2시, 오후 6시에 각각 이벤트가 한 번씩 발생했음을 보여준다.
# 출력 결과
datetime count
0 9 1
1 14 1
2 18 1
반응형
'👩💻 Develope > Python' 카테고리의 다른 글
[Pandas] to.sql() (0) | 2024.08.23 |
---|---|
[Pandas] apply로 다중 반환 값을 여러 열에 할당하기 (0) | 2024.08.22 |
[Python] 파일 날짜 가져오기 (0) | 2024.08.08 |
[Python] multiprocessing (0) | 2024.08.01 |
[Python] __init__(), __new__() (0) | 2024.07.31 |