판다스에서 데이터를 다룰 때, 데이터 유형을 이해하고 적절히 관리하는 것은 매우 중요합니다. 올바른 데이터 유형을 사용하면 계산 오류를 방지하고, 정확한 분석과 시각화를 가능하게 하며, 효율적인 데이터 처리를 할 수 있습니다.
이 글에 사용할 예제 데이터 프레임을 만들어 보겠습니다.
이번 예제에서는 책 데이터베이스를 분석한다고 가정해 보겠습니다. 제목, 저자, 발행 연도, 가격, 재고 여부와 같은 정보를 포함한 데이터프레임을 사용해 데이터 유형을 확인하고 적절히 변경하는 방법을 배워보겠습니다.
import pandas as pd
data = {
"Title": ["To Kill a Mockingbird", "1984", "The Great Gatsby", "The Catcher in the Rye"],
"Author": ["Harper Lee", "George Orwell", "F. Scott Fitzgerald", "J.D. Salinger"],
"Year Published": ["1960", "1949", "1925", "1951"],
"Price": ["10.99", "9.99", "12.49", "8.99"],
"Availability": ["True", "True", "False", "True"]
}
df = pd.DataFrame(data)
print(df)
데이터 유형 확인
모든 열의 데이터 유형을 확인
.dtypes 속성을 사용하여 모든 열의 데이터 유형을 확인할 수 있습니다.
print(df.dtypes)
출력:
Title object
Author object
Year Published object
Price object
Availability object
dtype: object
여기서 object는 텍스트 또는 혼합 유형 데이터를 포함한다는 것을 의미합니다. "Year published"와 "Price"는 숫자이어야 하고 "Availability"는 불리언이어야 하지만 데이터가 문자열(object)로 저장된 것을 알 수 있습니다.
데이터 유형 dtype 종류:
- 정수형 (Integer): 소수점 없이 저장되는 숫자형 데이터
- int8, int16, int32, int64
- 부동소수점형 (floating-point)
- float32 (e.g. 1.75, 1.82)
- 오브젝트 (object)
- 문자열 또는 혼합 데이터 (텍스트 숫자 리스트)
- 불리언 (Boolean)
- 날짜 시간 (Datetime)
특정 열의 데이터 유형 확인
특정 열의 데이터 유형을 확인하려면 아래와 같이 열 이름을 사용하면 됩니다.
print(df["Price"].dtype)
출력:
object
데이터 유형 변경
데이터 유형은 데이터의 특성과 사용 목적에 따라 적절히 선택해야 합니다. 예를 들어:
- float: Price와 같은 연속적인 값(소수점 포함) 처리에 적합합니다.
- bool: Availability처럼 참/거짓을 나타내는 이진 값에 적합합니다.
- datetime: 시간 데이터(예: 이벤트 날짜, 주문 시간 등)를 다룰 때 사용합니다.
열을 정수형으로 변환하기
"Price" 열은 문자열로 저장되어 있으나 숫자형으로 바꿔야 합니다. 이를 변환하려면 아래와 같이. astype()을 사용하면 됩니다.:
df["Price"] = df["Price"].astype(float)
df["Year Published"] = df["Year Published"].astype(int)
df["Availability"] = df["Availability"].astype(bool)
print(df.dtypes)
출력:
Title object
Author object
Year Published int64
Price float64
Availability bool
dtype: object
.astype 오류
astype사용 시, 데이터의 실제 내용이 변환 데이터 유형과 호환되지 않으면 ValueError가 발생합니다.
예제 데이터프레임에서 Price 열은 문자열(object)로 저장되어 있고 소수점 값을 포함합니다. 이를 정수형(int)으로 변환하려고 시도하면 다음과 같은 오류가 발생합니다:
df["Price"] = df["Price"].astype(int)
출력:
ValueError: invalid literal for int() with base 10: '10.99'
- astype(int)는 문자열 값을 정수형으로 변환하려고 시도합니다.
- Price 열의 값 중 '10.99'과 같이 소수점이 포함된 문자열은 바로 정수로 변환할 수 없으므로 오류가 발생합니다.
- 이 경우, 데이터가 먼저 부동소수점(float)으로 변환된 후 정수로 변환되어야 합니다.
'ᐧ༚̮ᐧ Data Science | AI > Python' 카테고리의 다른 글
[파이썬, conda] 가상 환경이란? (feat. 가상환경 생성, 활성화, 삭제) (1) | 2024.11.16 |
---|---|
[컴퓨터 비전] 파이썬 OpenCV로 배우는 이미지 전처리: 히스토그램 (0) | 2024.11.11 |
[컴퓨터 비전] 파이썬 OpenCV 튜토리얼: 설치, 이미지 읽기 (0) | 2024.11.10 |
[파이썬 Pandas] 데이터프레임 병합 merge 가이드 (1) | 2024.11.09 |
비주얼 스튜디오 코드 폰트 바꾸기, 크기 바꾸기 + 코딩용 폰트 추천! (1) | 2023.02.17 |