간단히 pandas를 활용해서 시간데이터를 다루는 법을 정리하려고 합니다.
1. datetime으로 형변환하기
2. 날짜, 시간, 분 추출하기
3. 값 변경하기
4. 시간 조건 걸기
1. datetime으로 형변환하기
우리에게 아래와 같은 dataset이 있다고 할게요.
start_date_time 지금은 string 타입으로 있는데, 이걸 datetime형으로 바꿔주려고 합니다.
1
|
df['dt2'] = pd.to_datetime(df['start_date_time'], format='%Y-%m-%d %H:%M', errors='raise')
|
cs |
[output]
2. 날짜/시간/시/분으로 추출하기
이제 dt2 값을 날짜/시간/시/분으로 쪼개 보려고 합니다.
코드는 더 간단해요. 이미 dt2가 datetime 형식이기 때문이죠.
"import datetime as dt"를 미리 해주세요.
1
2
3
4
5
6
7
8
9
10
11
12
|
# 날짜 추출하기
df['log_date']=df['dt2'].dt.date
# 시간 추출하기
df['log_time']=df['dt2'].dt.time
# 시 추출하기
df['log_hour']=df['dt2'].dt.hour
# 분 추출하기
df['log_min']=df['dt2'].dt.minute
|
cs |
[output]
3. 시간 값 변경하기
end 컬럼에서 24:00로 되어 있는 값은 python datetime에서는 읽히지가 않아요.
꼭 0:00으로 변경해야됩니다.
1
2
|
df['end'].replace('24:00','0:00', inplace=True)
|
cs |
[output]
그 다음 위와 동일하게 pd.to_datetime함수를 써주면 돼요.
1
|
df['end2']=pd.to_datetime(df['end'], format='%H:%M', errors='raise').dt.time
|
cs |
[output]
** 24:00로 되어있는 것은 꼭 0:00로 변경해야지 pd.to_datetime함수가 적용된다는거 잊지 마세요.
3. 시간 조건걸기
end값이 19:00:00인 행은 어떻게 추출해 낼까요?
end의 타입에 관계없이 아래와 같이 써주면 쉽게 확인할 수 있습니다.
특히 시간 데이터는 형타입에 따라 쓸수있는 조건들이 다르기 때문에 저는 항상 string형태로 변환시킨후 조건문을 적용시켜요.
1
2
|
df[df['end2'].astype('str')=='19:00:00']['id']
|
cs |
>> [output]
b
4. 년도, 월형식으로 변경하기
날짜에서 일을 제외하고, 년도/월형식으로 표현할 때 유용한 방법입니다.
df['yymm']=df['date'].dt.strftime("%Y/%m")
'IT > 파이썬' 카테고리의 다른 글
if문과 map함수로 파생변수 만들기 (0) | 2021.01.25 |
---|---|
[시간 데이터 다루기] rsub활용하여 시간차이 구하기 (0) | 2021.01.08 |
applymap 활용하기 (0) | 2021.01.05 |
one-hot encoding(원-핫 인코딩) (0) | 2021.01.04 |
kkma를 활용한 word cloud 그리기 (0) | 2021.01.03 |