Pandas 데이터 타입 변환 (astype()) - Pandas 데이터 변환과 가공
데이터 분석을 진행하다 보면 다양한 데이터 타입을 다뤄야 하며, 필요에 따라 데이터 타입을 변경해야 하는 경우가 많습니다. 예를 들어, 문자열로 저장된 숫자 데이터를 정수형으로 변환하거나, 실수형 데이터를 정수형으로 변환하는 등의 작업이 필요할 수 있습니다. Pandas의 astype()
메서드는 이러한 데이터 타입 변환을 간편하게 수행할 수 있도록 도와줍니다. 이번 포스팅에서는 astype()
을 활용한 데이터 타입 변환 방법과 실전 예제를 살펴보겠습니다.
1. astype()
메서드 개요
Pandas의 astype()
메서드는 Series 또는 DataFrame의 데이터 타입을 원하는 타입으로 변환하는 데 사용됩니다. 기본적인 사용법은 다음과 같습니다.
import pandas as pd
# 예제 데이터 생성
data = {'A': [1, 2, 3], 'B': ['4', '5', '6']}
df = pd.DataFrame(data)
# 데이터 타입 변환
df['B'] = df['B'].astype(int)
print(df.dtypes)
주요 특징
- 지원 타입:
int
,float
,str
,bool
,category
,datetime
,object
등 다양한 데이터 타입으로 변환할 수 있습니다. - 컬럼 단위 변환: 특정 컬럼만 변환할 수 있습니다.
- 딕셔너리 활용 가능: 여러 컬럼을 한 번에 변환할 때 딕셔너리 형태로 지정할 수 있습니다.
2. 정수형 변환 (int
)
문자열이나 실수형 데이터를 정수형(int
)으로 변환할 수 있습니다.
data = {'A': ['10', '20', '30'], 'B': [1.1, 2.2, 3.3]}
df = pd.DataFrame(data)
# 문자열 -> 정수 변환
df['A'] = df['A'].astype(int)
# 실수 -> 정수 변환 (소수점 버림)
df['B'] = df['B'].astype(int)
print(df)
변환 결과
A B
0 10 1
1 20 2
2 30 3
3. 실수형 변환 (float
)
정수 또는 문자열 데이터를 실수형(float
)으로 변환할 수 있습니다.
data = {'A': ['1', '2', '3'], 'B': [10, 20, 30]}
df = pd.DataFrame(data)
# 정수 및 문자열 -> 실수 변환
df['A'] = df['A'].astype(float)
df['B'] = df['B'].astype(float)
print(df.dtypes)
4. 문자열 변환 (str
)
정수, 실수, 기타 타입 데이터를 문자열(str
)로 변환할 수 있습니다.
data = {'A': [1, 2, 3], 'B': [1.1, 2.2, 3.3]}
df = pd.DataFrame(data)
# 모든 컬럼을 문자열로 변환
df = df.astype(str)
print(df.dtypes)
5. 카테고리형 변환 (category
)
카테고리형(category
)은 메모리를 절약할 수 있으며, 특정 범주의 값들만 포함하는 데이터에서 유용합니다.
data = {'A': ['apple', 'banana', 'apple', 'orange']}
df = pd.DataFrame(data)
# 카테고리형 변환
df['A'] = df['A'].astype('category')
print(df.dtypes)
print(df['A'].cat.categories)
6. 불리언형 변환 (bool
)
숫자나 문자열 데이터를 불리언형(bool
)으로 변환할 수 있습니다. 0은 False
, 그 외 값은 True
로 변환됩니다.
data = {'A': [0, 1, 2, 3], 'B': ['True', 'False', 'True', 'False']}
df = pd.DataFrame(data)
# 정수 -> 불리언 변환
df['A'] = df['A'].astype(bool)
# 문자열 -> 불리언 변환
df['B'] = df['B'].astype(bool)
print(df)
7. 날짜 변환 (datetime
)
문자열 데이터를 날짜(datetime
) 형식으로 변환할 수 있습니다.
data = {'A': ['2024-01-01', '2024-02-01', '2024-03-01']}
df = pd.DataFrame(data)
# 문자열 -> datetime 변환
df['A'] = pd.to_datetime(df['A'])
print(df.dtypes)
8. 여러 컬럼을 동시에 변환하기
여러 컬럼을 동시에 변환할 때는 astype()
에 딕셔너리를 전달하면 됩니다.
data = {'A': ['1', '2', '3'], 'B': ['4.1', '5.2', '6.3'], 'C': [0, 1, 0]}
df = pd.DataFrame(data)
# 여러 컬럼을 한 번에 변환
df = df.astype({'A': int, 'B': float, 'C': bool})
print(df.dtypes)
9. 변환 오류 방지 (errors
옵션)
astype()
을 사용할 때 변환이 실패하면 기본적으로 ValueError
가 발생합니다. errors='ignore'
옵션을 사용하면 변환이 불가능한 경우 무시할 수 있고, errors='coerce'
옵션을 사용하면 변환 실패 시 NaN
으로 대체할 수 있습니다.
data = {'A': ['1', '2', 'three']}
df = pd.DataFrame(data)
# 변환 실패 시 NaN 처리
df['A'] = pd.to_numeric(df['A'], errors='coerce')
print(df)
10. 결론
Pandas의 astype()
메서드는 데이터 타입 변환을 유연하고 쉽게 수행할 수 있도록 해줍니다. 숫자, 문자열, 불리언, 카테고리, 날짜 등 다양한 데이터 타입을 지원하며, errors
옵션을 활용하여 변환 오류를 방지할 수도 있습니다. 데이터 전처리 과정에서 astype()
을 적절히 활용하시면 보다 정교한 데이터 분석이 가능할 것입니다.
'Python > Pandas' 카테고리의 다른 글
Pandas에서 행과 열 선택: loc[], iloc[], at[], iat[] (0) | 2025.10.09 |
---|---|
Pandas 날짜 데이터 처리 (to_datetime(), dt 속성 활용) (0) | 2025.10.07 |
Pandas에서 문자열 데이터 다루기: str.contains(), str.replace() (0) | 2025.10.06 |
Pandas 컬럼 추가, 삭제 및 데이터 수정하기 (0) | 2025.10.05 |
Pandas 데이터 정렬 및 필터링 (sort_values(), query()) (0) | 2025.10.04 |