해결된 질문
작성
·
59
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값이 제대로 처리가 안된 걸 알 수 있었습니다. 어떻게 해결할 수 있을까요?
답변 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 인턴입니다. 정아진님.
float64
컬럼의 null
값 처리를 하시는 중에 발생한 이슈에 대해 알려주셔서 감사합니다.
현재 코드를 통해 object
타입이 아닌 숫자형(number
) 타입의 컬럼들에 대한 null
값을 처리하고자 하신 점은 적절합니다. 그러나 일부 float64
타입 컬럼에서 null
값이 여전히 존재한다면, 이는 fillna
가 해당 컬럼들에 제대로 적용되지 않았거나, inplace=True
옵션으로 인해 DataFrame이 업데이트되지 않는 경우가 발생할 수 있습니다.
이 문제를 해결하기 위해 아래 추가 방법을 시도해 보시기 바랍니다:
개별 컬럼에 적용: fillna
을 각 float64
칼럼에 반복적으로 적용하여, 각 컬럼의 평균값으로 결측값을 대체하는 방법입니다.
for column in num_columns:
house_df[column] = house_df[column].fillna(house_df[column].mean())
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
값이 올바르게 평균으로 대체되었는지 확인하세요.
아래 원본 질문과 관련된 답변 링크들을 참고하시면, 비슷한 상황을 겪으신 분들의 문제 해결 사례를 볼 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.