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

곽민선님의 프로필 이미지
곽민선

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

5장 회귀 실습 2:캐글경연 주택가격 예측-Advanced Regression Techniques - 01 질문 있습니다😊

작성

·

163

0

선생님 안녕하세요! 5장 회귀 실습 2:캐글경연 주택가격 예측-Advanced Regression Techniques - 01 을 듣다가 타겟 값인 Price를 로그 변환하여 정규 분포 형태로 변환하고, 피처들 중 숫자형 컬럼의 Null 값 데이터 처리 부분 코드를 다음과 같이 썼습니다. 그런데 결과가 사진과 같이 float64가 포함된 형태로 나왔습니다. 제가 어떤 부분에서 잘못한 건지, 그리고 어떻게 해야 선생님과 같은 결과가 나올 수 있나요?ㅎㅎ

# SalePrice 로그 변환

original_SalePrice = house_df['SalePrice']

house_df['SalePrice'] = np.log1p(house_df['SalePrice'])

# Null이 너무 많은 컬럼들과 불필요한 컬럼 삭제

house_df.drop(['Id', 'PoolQC', 'MiscFeature', 'Alley', 'Fence', 'FireplaceQu'], axis=1, inplace=True)

# Drop하지 않는 숫자형 Null 컬럼들은 평균 값으로 대체

num_columns = house_df.dtypes[house_df.dtypes !='object'].index.to_list()

house_df[num_columns].fillna(house_df[num_columns].mean(), inplace=True)

# Null 값이 있는 피처명과 타입을 추출

null_column_count = house_df.isnull().sum()[house_df.isnull().sum() > 0]

print('## Null 피처의 Type :\n', house_df.dtypes[null_column_count.index])

 

답변 1

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

이건 저도 이유를 잘 모르겠습니다만,

house_df[num_columns].fillna(house_df[num_columns].mean(), inplace=True)

가 먹히질 않는 군요. house_df[num_columns] 에 inplace 가 바로 적용되지 않고 있습니다.

좀 더 파고 들어야 할 것 같은데, house_df[num_columns].fillna(house_df[num_columns].mean(), inplace=True) 같은 형태가 inplace로 바로 적용이 않되는 것 같습니다.

감사합니다.

# 아래 2줄의 코드에서는 int타입만 처리가 되어서

num_columns = house_df.dtypes[house_df.dtypes != 'object'].index.to_list()

house_df[num_columns].fillna(house_df[num_columns].mean(),inplace=True)

#아래와 같이 float타입 처리를 위한 코드를 추가해서 처리해서 해결해 보았습니다.

from sklearn.impute import SimpleImputer

float_cols = house_df.select_dtypes(include='float64').columns

# 결측치를 평균값으로 대체하기 위한 Imputer 생성

imputer = SimpleImputer(strategy='mean')

# float64 타입 열에 대해서만 Imputer 적용

house_df[float_cols] = imputer.fit_transform(house_df[float_cols])

 

곽민선님의 프로필 이미지
곽민선

작성한 질문수

질문하기