키, 몸무게 등이 포함 된 데이터 세트가 있으며 NaN 값을 해당 성별의 평균 값으로 채우려 고합니다.
예시 데이터 세트 :
gender height weight
1 M 5 NaN
2 F 4 NaN
3 F NaN 40
4 M NaN 50
df = df.groupby("Gender").transform(lambda x: x.fillna(x.mean()))
현재 출력 :
height weight
1 5 50
2 4 40
3 4 40
4 5 50
예상 출력 :
gender height weight
1 M 5 50
2 F 4 40
3 F 4 40
4 M 5 50
불행히도 이것은 나중에 중요한 성별 열을 삭제합니다.
채우려는 2 개의 열을 반복 GroupBy.transform
하고 '성별'별로 그룹화하여 수행하는 것은 어떻습니까?
for col in ['height','weight']:
df[col] = df.groupby('gender')[col].transform(lambda x: x.fillna(x.mean()))
print(df)
gender height weight
0 M 5.0 50.0
1 F 4.0 40.0
2 F 4.0 40.0
3 M 5.0 50.0
모든 숫자 열을 채우려면에서 가져와 list
동일한 접근 방식을 수행 할 수 있습니다 .
features_to_impute = [
x for x in df.columns if df[x].dtypes != 'O' and df[x].isnull().mean() > 0
]
for col in features_to_impute:
df[col] = df.groupby('gender')[col].transform(lambda x: x.fillna(x.mean()))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다