반응형
1. 날짜 데이터 변환
- 날짜 데이터를 다룰 때는 데이터 타입을 정확하게 지정하는 것이 매우 중요합니다. 날짜 데이터는 다양한 연산과 비교가 가능하므로 적절한 형식으로 변환해야 합니다. 우선 간단한 예시를 통해 날짜 데이터를 어떻게 처리하는지 알아보겠습니다.
1) 데이터프레임 생성하기
- 먼저 예제 데이터를 담은 데이터프레임을 만들어보겠습니다. 여기에는 이름, 생년월일, 나이 정보가 포함되어 있습니다.
Person = pd.DataFrame(
data = {"name" : ["JUN", "ANGELA", "SAM"],
"birthday" : ["2000-04-21", "1997-01-12", "1989-02-11"],
"age" : [26, 30, 38]},
columns = ["name", "birthday", "age"]
)
2) 데이터프레임 타입 확인하기
- 데이터프레임을 생성했으면, info() 메서드를 통해 각 열의 데이터 타입을 확인해 보겠습니다.
Person.info()
- 이때 birthday 열은 날짜 형식으로 보이지만, 실제 데이터 타입은 object로 출력됩니다. 이는 파이썬에서 문자열로 인식되고 있다는 뜻입니다. 따라서 날짜 연산을 위해서는 object가 아닌 datetime64 형식으로 변환이 필요합니다.
3) 날짜 데이터로 변환하기
- pd.to_datetime() 함수를 사용하면 문자열을 날짜 데이터 타입으로 변환이 가능합니다. 아래와 같이 format 인자를 통해 날짜 형식을 명시하면 더욱 정확한 변환이 가능합니다.
- 변환 후에 다시 info()를 실행해보면, birthday 열이 datetime64로 변환되었음을 확인할 수 있습니다. 이렇게 변환된 날짜 데이터는 나이 계산, 날짜 간 차이 비교 등 다양한 분석에 활용할 수 있습니다.
pd.to_datetime(Person["birthday"], format = "%Y-%m-%d")
2. 변환 오류와 해결 방법
1) 오류 발생 예시
- 예를 들어, 조선시대 왕들의 출생연도 데이터를 날짜로 변환하려고 할 때 오류가 발생할 수 있습니다. 이 데이터는 다음과 같이 문자열(object)로 되어 있습니다. 이 데이터를 datetime 형식으로 변환하면 오류가 발생합니다.
[출력 값]
OutOfBoundsDatetime: Out of bounds nanosecond timestamp
2) 오류 발생 원인
- 이 오류는 말 그대로 "경계를 벗어난 나노초 타임스탬프"라는 뜻입니다.
- 판다스(pandas)의 datetime64 타입은 나노초 단위의 시간 정보를 제공합니다. 이때 사용되는 64비트 정수의 범위는 약 584년, 서기 1677년~2262년 사이로 제한되어 있습니다. 따라서 그 보다 과거인 1300년대 날짜는 이 범위에 포함되지 않아 오류가 발생하는 것입니다.
3) 해결 방법
- 이러한 문제를 해결하기 위해서는 두 가지 방법이 있습니다.
- 첫 번째는 해당 데이터를 계속해서 문자열로 사용하는 것이고, 두 번째는 변환이 불가능한 값을 결측치(NaN 혹은 NaT)로 처리하는 것입니다.
- pandas에서는 errors = 'coerce' 옵션을 활용하면 변환 불가능한 값들을 자동으로 NaN이나 NaT로 처리할 수 있습니다.
Joseon_King['출생연도'] = pd.to_datetime(Joseon_King['출생연도'], errors = 'coerce')
- 이렇게 설정하면, 변환할 수 있는 날짜는 정상적으로 처리되고, 처리할 수 없는 값은 자동으로 결측치로 변환되어 분석이 중단되지 않도록 도와줍니다.
이상으로 날짜 데이터를 다루는 기본적인 방법부터, 발생할 수 있는 오류와 해결책까지 함께 살펴보았습니다. 데이터 분석에서는 날짜 데이터가 중요한 역할을 하는 경우가 많으므로, 정확한 변환과 예외 처리 방법을 익혀두는 것이 좋습니다.
감사합니다:-)
'데이터 분석 관련' 카테고리의 다른 글
파이썬: mutable과 immutable 구분하기 / PyCharm 활용 (0) | 2025.03.05 |
---|---|
[통계 개념] 정규분포, 첨도와 왜도 알아보기 (0) | 2025.02.25 |
pandas (5) : 데이터프레임 생성, 데이터프레임 필터링 / 주피터 노트북 (0) | 2025.02.13 |
pandas(4) : 데이터(시리즈, 데이터프레임) 생성, 시리즈 데이터 필터링, 시리즈 연산, 내림차순, 올림차순 (0) | 2025.02.12 |
프로그래머스 문제 풀이 - 두 수의 합 구하기 (0) | 2025.02.11 |