inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

회귀 실습 2: 캐글경연 주택가격 예측 - Advanced Regression Techniques - 01

float64 null 값 처리 방법

해결된 질문

99

정아진

작성한 질문수 2

0

코랩에서 house_df.fillna(house_df.mean(), inplace=True)를 실행하였는데 에러가 나서 커뮤니티를 보니

# object가 아닌 number 타입을 별도 리스트로 추출
num_columns=house_df.dtypes[house_df.dtypes!='object'].index.to_list()
# Drop 하지 않는 number 타입 컬럼들에 대해서 Null컬럼들은 평균값으로 대체
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])

이 코드를 실행하니 Null 피처의 Type 중에서 float64 컬럼들은 null값이 제대로 처리가 안된 걸 알 수 있었습니다. 어떻게 해결할 수 있을까요?

python 머신러닝 통계

답변 2

0

권 철민

안녕하십니까,

Colab 환경의 Pandas 버전이 실습 버전과 달라서 그런것 같은데, 아래 코드가 float64일때 제대로 동작하지 않는 것 같습니다.

# object가 아닌 number 타입을 별도 리스트로 추출 num_columns=house_df.dtypes[house_df.dtypes!='object'].index.to_list() # Drop 하지 않는 number 타입 컬럼들에 대해서 Null컬럼들은 평균값으로 대체 house_df[num_columns].fillna(house_df[num_columns].mean(),inplace=True)

아래와 같이 코드를 변경해 보시지요.

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

# number 타입 컬럼들에 대해서 Null컬럼들은 평균값으로 대체

for column in num_columns:

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

 

감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 정아진님.

float64 컬럼의 null 값 처리를 하시는 중에 발생한 이슈에 대해 알려주셔서 감사합니다.

현재 코드를 통해 object 타입이 아닌 숫자형(number) 타입의 컬럼들에 대한 null 값을 처리하고자 하신 점은 적절합니다. 그러나 일부 float64 타입 컬럼에서 null 값이 여전히 존재한다면, 이는 fillna가 해당 컬럼들에 제대로 적용되지 않았거나, inplace=True 옵션으로 인해 DataFrame이 업데이트되지 않는 경우가 발생할 수 있습니다.

이 문제를 해결하기 위해 아래 추가 방법을 시도해 보시기 바랍니다:

  1. 개별 컬럼에 적용: fillna을 각 float64 칼럼에 반복적으로 적용하여, 각 컬럼의 평균값으로 결측값을 대체하는 방법입니다.

    for column in num_columns:
        house_df[column] = house_df[column].fillna(house_df[column].mean())
    
  2. Sklearn의 SimpleImputer 사용: sklearn 라이브러리의 SimpleImputer를 활용하는 방법도 있습니다.

    from sklearn.impute import SimpleImputer
    
    
    imputer = SimpleImputer(strategy='mean')
    house_df[num_columns] = imputer.fit_transform(house_df[num_columns])
    

이를 통해 모든 float64 타입의 컬럼에서 null 값이 올바르게 평균으로 대체되었는지 확인하세요.

아래 원본 질문과 관련된 답변 링크들을 참고하시면, 비슷한 상황을 겪으신 분들의 문제 해결 사례를 볼 수 있습니다:

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

안녕하세요 열심히 수강중인 학생입니다

0

58

2

정수 인덱싱

0

65

2

넘파이 오류

0

83

2

11강 numpy의 axis 축 질문 드립니다.

0

84

2

Kaggle 에서 Santander customer satisfaction data 를 다운로드 되지가 않습니다.

0

76

2

Feature importances 를 보여주는 barplot 이 그래프로 안보여져요.

0

68

2

타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.

0

73

2

타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.

0

62

2

5강 강의 오류가 있어요.

0

81

1

실무에서 LTV 관련 모델 선택 질문입니다!

0

71

2

14강 강의 듣는중에 궁금한게 있어서 질문합니다~

0

67

3

파이썬 다운그레이 후 사이킷런 재설치

0

115

2

좋은 강의 감사합니다.

0

70

2

scoring 함수 음수값

0

66

2

6번 강의에 사이킷런, 파이썬, 아나콘다 각각 버전 일치 안 시키고 진행해도 강의 따라가 지나요?

0

98

2

분류 평가 정확도 예측

0

75

2

안녕하세요. 강의 들으면서 업무에 적용하고 싶은 수강생입니다.

0

96

1

카카오톡 채널 있나요

0

104

1

혹시 강의에서 사용하시는 ppt 받을 수 있는건가요

0

187

2

pca 스케일링 관련하여 질문드립니다.

0

100

2

주피터 대신 구글 코랩

0

169

2

강의에서 사용하는 pdf or ppt자료는 따로 없는 건가요?

0

145

2

실루엣 스코어..

0

82

2

TMDB5000 데이터 세트를 이용한 콘텐츠기반 필터링 구현 실습 - 02 강의내용 질문입니다

0

96

2