본문 바로가기

python/빅데이터분석기사

[초등학생도 이해하는 빅데이터분석기사 실기] 판다스 카테고리형 데이터를 수치형으로 변환하기 (LabelEncoder())

반응형

안녕하세요 '코딩 오페라'블로그를 운영하고 있는 저는 'Master.M'입니다.

현재 '초등학생도 이해하는 빅데이터분석기사 실기'라는 주제로 판다스(pandas)를 이용한 데이터 마이닝에 대해 포스팅을 진행하고 있습니다. 제목처럼 진짜 핵심 내용을 쉽게 설명하는 것을 목표로 하고 있으니 데이터 마이닝에 입문하고 싶은 분들은 많은 관심 부탁드립니다. 오늘 알아볼 내용은 '판다스 카테고리형 데이터를 수치형으로 변환하기 (LabelEncoder())' 입니다.

 

 

일반적인 데이터셋

 

위 그림과 같이, 우리가 일반적으로 사용하는 데이터셋은 크게 카테고리형 데이터와 수치형 데이터로 나뉩니다. 카테고리형 데이터는 그림의 빨간색 박스 안의 데이터들처럼 정해진 범주안의 문자형 데이터를 의미합니다. 예를 들어 졸업여부를 나타내는 카테고리인 'GraduateOrNot'에는 데이터가 Yes, No 이렇게 2가지가 존재합니다. 더 많은 예시들을 정리하자면 다음과 같습니다.

 

[카테고리형 데이터]

  • 사이즈 : X-Small, Small, Medium, Large, X-Large
  • 색깔 : 빨강, 검정, 흰색
  • 스타일 : 반팔, 긴팔

이와 달리 수치형 데이터는 카테고리형 데이터처럼 데이터의 범주가 정해져 있지 않은 숫자형 데이터를 의미합니다. 예를들어 위 그림의 'Age'나 'AnnualIncome'과 같이 데이터의 종류가 정해져있지 않아 무한대의 경우가 나올 수 있습니다.

더 많은 예시들을 정리하자면 다음과 같습니다.

 

[수치형 데이터]

  • 가족수
  • 보유 차량수
  • 반려동물수

이러한 수치형 데이터는 모델에 바로 학습이 가능하지만, 카테고리형 데이터는 문자형으로 모델의 학습이 불가능합니다. 때문에 학습을 하기 위해서는 이러한 문자형 데이터를 숫자로 변환해주어야 합니다. 예를 들어 위 그림에서 카테고리 'GraduateOrNot'에서 Yes, No를 숫자형태인 0, 1로 변환해 줍니다. 이를 가능하게 해주는 함수가 바로 판다스의 LabelEncoder() 함수입니다. 그럼 지금부터 LabelEncoder() 함수에 대한 실습을 진행해 보도록 하겠습니다.

 

t2-1-train.csv
0.08MB

 

import pandas as pd

train = pd.read_csv("t2-1-train.csv")
print(train.iloc[5:10])

 

먼저 위 예시 't2-1-train.csv' 파일을 다운로드 받고, 다음과 같이 pandas의 'read_csv'함수를 이용해 csv파일을 불러와줍니다. 참고로 이 부분에 대해 자세히 알고 싶으신 분들이 아래 포스트를 참고하시기 바랍니다.

https://codingopera.tistory.com/11 

 

파이썬 csv 파일 불러오기

안녕하세요 '코딩 오페라'블로그를 운영하고 있는 저는 'Conducter'입니다. 오늘 알아볼 내용은 파이썬에 csv파일을 불러오는 것입니다. 그전에 우선 csv파일에 대해 알아보도록 합시다. csv(comma-separa

codingopera.tistory.com

 

그러면 위 그림 '일반적인 데이터셋'과 같은 데이터를 확인할 수 있습니다. 여기서 우리는 이제 LabelEncoder() 함수를 통해 카테고리 'GraduateOrNot'의 데이터를 카테고리형에서 학습이 가능한 수치형 데이터로 변환해줄 겁니다. 

from sklearn.preprocessing import LabelEncoder

LE = LabelEncoder()
train['GraduateOrNot'] = LE.fit_transform(train['GraduateOrNot'])

print(train.iloc[5:10])

 

위와 같이 LabelEncoder() 함수는 sklearn.preprocessing 라이브러리를 통해 불러올 수 있습니다. 그런 다음 LabelEncoder() 함수를 LE라고 정의하고, 마지막으로 카테고리형에서 수치형으로 데이터 변환을 원하는 데이터를 fit_transform() 함수를 통해 변환해 줍니다.

 

수치형으로 변환된 데이터

 

그러면 위 그래프와 같이 ' GraduateOrNot' 데이터가 0 또는 1로 변환되어, 머신러닝 모델에 학습 가능한 형태가 된 것을 확인할 수 있습니다. 

 

지금 까지 저희는 ' 판다스 카테고리형 데이터를 수치형으로 변환하기 (LabelEncoder())'에 대해 알아보았습니다. 도움이 되셨나요? 만약 되셨다면 구독 및 좋아요로 표현해 주시면 정말 많은 힘이 됩니다. 궁금한 사항 혹은 앞으로 다루어 주었으면 좋을 주제가 있으시면 댓글 남겨주시면 감사하겠습니다. 저는 '코딩 오페라'의 'Master.M'이었습니다. 감사합니다.

반응형