인프런 커뮤니티 질문&답변

빅분기수강생님의 프로필 이미지

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

5-1 작업형2 모의문제1 강의 내용 질문

해결된 질문

24.06.03 00:24 작성

·

84

·

수정됨

1

안녕하세요. 선생님

해당 강의에서

피처엔지니어링을 위해 베이스 라인(수치형 데이터만 사용해보기) 만드는 과정에서

선생님께서는

cols = train.select_dtypes(include="O").columns

train = train.drop(cols, axis=1)

test= test.drop(cols, axis=1)

로 하셨는데요.

 

train = train.select_dtypes(exclude="O")

test = test.select_dtypes(exclude="O")

 

로 해도 문제 없을까요? drop() 메소드로 cols 변수에 넣은 칼럼을 axis=1 로 전부 제거한거니까

그냥 범주형 데이터를 제외 시키는 select_dtypes(exclude="O") 으로 해도 문제 없을 것 같긴 한데, 확인차 질문 글 남깁니다.

 

 

답변 2

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

2024. 06. 03. 09:49

select_dtypes(exclude="O")을 사용하셔도 전혀 문제 없습니다. 오히려 코드가 더 직관적이게 보이네요!

0

인프런 AI 인턴님의 프로필 이미지

2024. 06. 03. 00:26

안녕하세요, 인프런 AI 인턴입니다.

빅분기수강생님, 피처 엔지니어링 과정 중 베이스 라인을 만드는데 있어서 귀하의 질문과 관련된 유사한 상황을 다룬 기존 질문에 대한 답변을 찾았습니다.

dataFrame에서 문자열 컬럼만 제거하는 방법에 대해 질문에서, 문자열 형태의 컬럼들을 제거하기 위해 train.select_dtypes(exclude="O").columns를 이용하는 방식에 대한 답변이 제공되었습니다. 이 답변에서는 Pandas의 select_dtypes 메소드를 활용하여 특정 데이터 타입을 포함하거나 배제하고, 그 결과로 얻어진 컬럼 이름들을 기반으로 데이터프레임에서 해당 컬럼들을 선택하거나 제거하는 방법을 승인하고 있습니다.

질문자님께서 제안한 방식으로 문자열 데이터 타입을 배제하고자 할 때,

train = train.select_dtypes(exclude="O")
test = test.select_dtypes(exclude="O")

를 사용하여도 기본적으로 문제가 되지 않습니다. 이 방식은 원하지 않는 데이터 타입을 직접적으로 배제하면서 남은 데이터 타입만을 포함하는 새로운 DataFrame을 생성합니다. 이는 선생님이 사용한 방법,

cols = train.select_dtypes(include="O").columns
train = train.drop(cols, axis=1)
test= test.drop(cols, axis=1)

와 동일한 최종 결과를 얻기 위한 다른 접근 방식입니다. 둘 다 문자열 데이터 타입을 제외한 수치형 데이터만을 포함하는 DataFrame을 만드는 목플을 달성합니다.

해당 주제에 대해 다른 질문글에서

import pandas as pd

# 예시 데이터프레임 생성
data = {
    'int_column': [1, 2, 3],
    'float_column': [1.1, 2.2, 3.3],
    'str_column': ['a', 'b', 'c']
}
df = pd.DataFrame(data)

# int와 float 타입 컬럼 선택
numeric_cols = list(df.select_dtypes(include=['int', 'float']).columns)

print(numeric_cols)

위와 같이 특정 컬럼 타입을 포함하거나 배제하여 컬럼을 선택하는 예시를 보여주고 있습니다. 이 방법을 사용하여 문자열 컬럼을 배제하는 것은 효율적이며 질문자님의 제안도 올바른 접근법 중 하나입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.