👩‍💻 Develope/Python

[Pandas] 데이터프레임에서 날짜와 시간 다루기

heywantodo 2024. 8. 9. 13:48
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
728x90
반응형