해결된 질문
작성
·
90
·
수정됨
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
0
안녕하세요, 인프런 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)
위와 같이 특정 컬럼 타입을 포함하거나 배제하여 컬럼을 선택하는 예시를 보여주고 있습니다. 이 방법을 사용하여 문자열 컬럼을 배제하는 것은 효율적이며 질문자님의 제안도 올바른 접근법 중 하나입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.