데이터분석과 개발

[Pandas] 원하는 데이터타입 컬럼 추출하기: df.dtypes, df.select_dtypes 본문

AI(시계열)/데이터 전처리

[Pandas] 원하는 데이터타입 컬럼 추출하기: df.dtypes, df.select_dtypes

긍정적인마인드 2023. 1. 1. 16:39

데이터 전처리 하거나 파악하는 단계에서 같은 데이터 타입만 뽑아서 보고 싶은 경우가 있습니다.

전처리의 경우 데이터 타입을 바꿔줄 때, 데이터분석 단계에서는 시각화해서 데이터를 파악해보는 경우에 그럴 것 같습니다.

저같은 경우, 처음 pandas를 시작했을 때 컬럼 하나하나 손수 데이터타입을 바꿔줬던 기억이 있네요,,

하지만 이미 pandas 안에 같은 데이터타입을 추출하는 방법이 구현되어 있었습니다. 제가 썼던 방법 2가지를 정리해보려 합니다.

 

Kaggle에서 다운 받은 타이타닉 데이터셋을 사용해보겠습니다.

import pandas as pd
import numpy as np

df = pd.read_csv('../Kaggle/Titanic/data/titanic/train.csv')
df = df.drop(columns=['PassengerId','Name', 'Ticket','Cabin'])
df =  df.dropna()
df

 

타이타닉 데이터셋

1. df.dtypes 사용

 

df.dtypes 함수를 사용하면 컬럼명과 데이터타입을 series 형태로 반환해줍니다. dtypes를 활용하여 boolean indexing을 해주게 되면 

# 데이터프레임 컬럼 데이터타입
print('데이터프레임 각 컬럼 데이터 타입')
print(df.dtypes)

# object 인 컬럼만 뽑기
df.dtypes[df.dtypes=='object']

df.dtypes 를 사용하면 이런 식으로 object형 컬럼을 추출할 수가 있습니다.

* df.dtypes 활용

pd.factorize를 활용해 object형을 카테고리 형식으로 바꿔보겠습니다.

for col in df.dtypes[df.dtypes=='object'].index:
    print(col)
    df[col] = pd.factorize(df[col])[0]
df

 

2. df.select_dtypes

두번째 같은 데이터타입 컬럼을 모아주는 방법으로 select_dtypes 라는 함수가 있습니다.

select_dtypes 의 함수엔 include, exclude 파라미터를 활용하여 원하는 데이터 타입 컬럼을  쉽게 모아줄 수 있습니다.

위와 마찬가지로 타이타닉 데이터셋을 사용하겠습니다.

# object 컬럼 추출
df.select_dtypes(include='object')

include 말고 exclude를 사용하여 object 컬럼만 제외한 컬럼들만 부를 수도 있습니다.

# object 컬럼빼고 추출
df.select_dtypes(exclude='object')

 

 

* df.select_dtypes 활용

이번엔 pd.get_dummies를 사용해서 'object' 컬럼을 카테고리 형태로 만들어 보겠습니다.

object 컬럼들을 select_dtypes를 활용해 모아주고 get_dummies 함수를 사용해서 원핫 인코딩 해주는 모습입니다.

object_col = df.select_dtypes(include='object').columns
df =  pd.get_dummies(df,columns=object_col)
df

 

이렇게 해서 데이터 타입을 한번에 추출하는 법을 정리해보았습니다. 

소개한 두 함수를 통해서 데이터타입 전처리 혹은 분석을 진행하면 좀더 편리할 것 같네요.

감사합니다!