조금씩 꾸준히 완성을 향해

[Pandas] 데이터 전처리 / 데이터 단위 변경, 데이터 타입 변경 본문

Python/Numpy & Pandas

[Pandas] 데이터 전처리 / 데이터 단위 변경, 데이터 타입 변경

all_sound 2022. 10. 4. 16:02

데이터 표준화


단위 변경

 

  • 같은 데이터셋에서 서로 다른 측정 단위 사용 시 전체 데이터의 일관성 측면에서 문제 발생 => 측정 단위를 동일하게 맞출 필요가 있음
  • 외국 데이터를 가져오면 국내에서 잘 사용하지 않는 도량형 단위 많이 사용
  • 영미권의 마일드, 야드, 온스 등은 한국의 미터, 평, 그램 등으로 변환
 
# mpg 데이터프래임의 mpg(mile per gallon)을 kpl(kilometer per liter)로 변환
df = pd.read_csv('/content/drive/MyDrive/ Encore Prac/auto-mpg.csv', header=None)
df
 
 
# mpg(mile per gallon)을 kpl(kilometer per liter)로 변환 후 소수점 둘째자리까지 반올림
# kpl 열 생성
df['kpl'] = df.mpg * 0.425 
df['kpl'] = df.kpl.round(2)
 
# kpl 열 확인
df
 
 
 
 

데이터타입 변경

 

▶ 숫자형으로 변환

 

    숫자가 문자열(object)로 저장된 경우 숫자형(int or float)으로 변환 필요

 

  • dtypes 속성을 사용해 자료형 확인
  • info() 메소드도 활용 가능
# df의 데이터타입 확인
df.dtypes
 
  • astype() : 데이터 타입 변경
# horsepower 열 데이터타입을 float으로 바꾸기 시도
# ValueError: could not convert string to float: '?' 
df.horsepower.astype('float64')
 
 
# horsepower 열의 유니크 값 확인
df.horsepower.unique()
 
 
import numpy as np
# horsepower 열의 '?' 값을 nan으로 변경
df.horsepower.replace('?', np.nan, inplace=True)
 
# horsepower 열 데이터타입을 float으로 바꾸기
# 성공!
df.horsepower = df.horsepower.astype('float64')
 
# df의 데이터타입 확인
df.dtypes
 
 
 
 
 

▶ 범주형으로 변환

 
     적은 수의 고유값이 반복적으로 나타나는 경우에는 범주형(category)데이터를 표현하는 것이 효율적
# origin 열 데이터타입 확인
df.origin.dtypes

# dtype('int64')
 
# origin 열의 유니크 값 확인 
df.origin.unique()
# array([1, 3, 2])  => 빈도순으로 정렬
 
# 값 카운트
df.origin.value_counts()
#데이터 명 변경
df.origin.replace({1:'USA', 2:'EU', 3: 'JAPAN'}, inplace=True)
df.origin.unique()
# array(['USA', 'JAPAN', 'EU'], dtype=object)
 
 
# origin 열을 범주형 데이터로 변경
df.origin = df.origin.astype('category')
df.origin.dtypes
# CategoricalDtype(categories=['EU', 'JAPAN', 'USA'], ordered=False)