딥상어동의 딥한 데이터 처리/전처리

[Pandas] 수치형 컬럼과 범주형 컬럼 구분하기

딥상어동의 딥한생각 2022. 7. 29. 22:37

 

1. 핵심내용

판다스에서 수치형 변수와 범주형 변수를 구분하는 방법을 다루어봅니다.

- _get_numeric_data

- select_dtypes()

 

데이터는 아래와 같이 타이타닉 데이터 셋을 불러왔습니다.

import pandas as pd
import numpy as np

data = pd.read_csv("https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv")

 

2. _get_numeric_data

첫 번째 방법은 _get_numeric_data메서드를 이용하는 것입니다.

all_columns = data.columns.tolist()
num_columns = data._get_numeric_data().columns.tolist()
cat_columns = list(set(all_columns) - set(num_columns))
1. _get_numeric_data()를 이용해 수치형 컬럼만 가져옵니다.
2. set자료구조를 이용해 all_columns에서 수치형 컬럼을 제외한다음
3. 다시 리스트로 변환합니다.

 

print(f'타이타닉 데이터 셋의 모든 컬럼은 아래와 같습니다. \n{all_columns}\n')
print(f'타이타닉 데이터 셋의 수치형 컬럼은 아래와 같습니다. \n{num_columns}\n')
print(f'타이타닉 데이터 셋의 범주형 컬럼은 아래와 같습니다. \n{cat_columns}\n')

 

3. select_dtypes 

두 번째 방법은 select_dtypes를 이용하는 방법입니다. 

num_columns = data.select_dtypes(include=np.number).columns.tolist()
cat_columns = data.select_dtypes(exclude=np.number).columns.tolist()
print(f'타이타닉 데이터 셋의 수치형 컬럼은 아래와 같습니다. \n{num_columns}\n')
print(f'타이타닉 데이터 셋의 범주형 컬럼은 아래와 같습니다. \n{cat_columns}\n')

4. 최종결과

data[num_columns].head()

data[cat_columns].head()