[Pandas] 데이터 타입 확인 및 변환 – dtypes, astype()

2025. 4. 24. 11:03·python/Pandas | Numpy
728x90

실제 데이터를 다루다 보면 이런 경험, 한 번쯤 해봤을 것이다:

  • 숫자인 줄 알았는데 문자열(object)이라 연산이 안 된다
  • 날짜인 줄 알았는데 그냥 문자열이라 정렬이 이상하게 나온다
  • 정수로 보여도 float64라 데이터 저장 용량이 크다

이처럼 Pandas에서 데이터 타입이 올바르지 않으면 연산 오류, 성능 저하, 분석 왜곡 등 수많은 문제가 발생할 수 있다.

 

예제 데이터

import pandas as pd

df = pd.DataFrame({
    'user_id': ['1001', '1002', '1003'],
    'age': ['25', '30', '35'],        # 문자열로 들어온 숫자
    'score': [88.0, 92.5, 85.0],
    'signup_date': ['2023-01-01', '2023-02-15', '2023-03-20']
})


데이터 타입 확인 – .dtypes

df.dtypes

→ 숫자인 age도 문자열로 들어왔고, signup_date도 날짜가 아닌 문자열 상태임을 확인


타입 변환 – .astype()

문자열 숫자를 정수형으로

df['age'] = df['age'].astype(int)

→ object → int64로 변환

 

정수형을 문자열로

df['user_id'] = df['user_id'].astype(str)

→ 숫자를 고유 ID 문자열로 유지하고 싶을 때 사용

 

float → int (주의)

df['score'].astype(int)  # 92.5 → 92로 소수점 절삭됨

→ 정수로 바꾸면 반올림 없이 내림이므로 주의


날짜 문자열을 datetime 타입으로

df['signup_date'] = pd.to_datetime(df['signup_date'])

→ object → datetime64[ns]

  • datetime 타입으로 바꾸면 dt.year, dt.month, dt.day, dt.weekday() 등 다양한 속성 사용 가능

 

범주형 데이터로 변환 – astype('category')

df['user_type'] = ['basic', 'premium', 'basic']
df['user_type'] = df['user_type'].astype('category')

  • 저장 공간 절약 (특히 반복되는 값이 많을 때 효과적)
  • .cat.codes로 정수 라벨 매핑 가능

주의사항

숫자처럼 보이는 문자열은 꼭 변환해줘야 한다

df['age'].mean()  # object이면 오류 발생

→ .astype(int)로 먼저 변환하지 않으면 수치 계산 불가

 

astype() 실패 예외 처리하기

df['age'] = pd.to_numeric(df['age'], errors='coerce')

→ 변환 실패 시 NaN으로 처리 (에러 방지용)


예제: 초기 로딩 시 타입 지정

df = pd.read_csv('data.csv', dtype={'user_id': str, 'age': int})

→ 데이터가 처음부터 잘못 들어오는 것을 사전에 차단할 수 있음

 

 

 

Pandas에서 데이터 타입 관리는 선택이 아닌 필수다.
정확한 타입을 지정해야만, 연산 오류 없이 빠르고 안정적인 분석이 가능하다.

dtypes로 현재 상태를 확인하고,
astype(), to_datetime(), to_numeric() 등으로 상황에 맞는 변환을 해주는 습관을 들어야합니다.

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'python > Pandas | Numpy' 카테고리의 다른 글

[Pandas] filter()  (0) 2025.04.24
[Pandas] 조건 조합 필터링 및 추출  (0) 2025.04.24
[Pandas] 결측치(NaN) 처리  (0) 2025.04.24
[Pandas] 정렬과 순위 매기기 – sort_values, rank  (0) 2025.04.24
[Pandas] Boolean Indexing (조건 필터링)  (0) 2025.04.24
'python/Pandas | Numpy' 카테고리의 다른 글
  • [Pandas] filter()
  • [Pandas] 조건 조합 필터링 및 추출
  • [Pandas] 결측치(NaN) 처리
  • [Pandas] 정렬과 순위 매기기 – sort_values, rank
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post (146)
      • python (45)
        • selenium (4)
        • algorithm (9)
        • Django (6)
        • Pandas | Numpy (22)
      • SQL (9)
      • Data Engineer (29)
      • Data Scientist (3)
      • Data Analysis (9)
      • Computer Science (35)
      • Why? (15)
      • 마음가짐 (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
[Pandas] 데이터 타입 확인 및 변환 – dtypes, astype()
상단으로

티스토리툴바