성별이 Male인 환자들의 age의 평균값은 ?
df['age'] = df['age'].str.replace('*','').astype('int')
result = df[df.gender =='Male'].age.mean()
print(result)
bmi컬럼의 결측치를 bmi컬럼의 결측치를 제외한 나머지 값들의 중앙값으로 채웠을 경우 bmi 컬럼의 평균을 소숫점 이하 3자리 까지 구하여라
df['bmi'].fillna(df['bmi'].median(),inplace=True)
round(df['bmi'].mean(),3)
bmi컬럼의 각 결측치들을 직전의 행의 bmi값으로 채웠을 경우 bmi 컬럼의 평균을 소숫점 이하 3자리 까지 구하여라
df['bmi'].fillna(method='ffill',inplace=True)
round(df['bmi'].mean(),3)
bmi컬럼의 각 결측치들을 결측치를 가진 환자 나이대(10단위)의 평균 bmi 값으로 대체한 후 대체된 bmi 컬럼의 평균을 소숫점 이하 3자리 까지 구하여라
df['age'] = df['age'].str.replace('*','').astype('int')
mean = df[df.bmi.notnull()].groupby(df.age//10 *10).bmi.mean()
dic = { x:y for x,y in mean.items()}
df.loc[df.bmi.isnull(),'bmi'] =(df[df.bmi.isnull()].age//10*10).map(lambda x : dic[x])
result = df.bmi.mean()
print(result)
Total
import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/Datamanim/datarepo/main/stroke_/train.csv')
# Noise 데이터 int형 변환
df['age'] = df['age'].str.replace('*','').astype('int')
# 결측치 제외 나이대별 평균값 계산 및 dictionary 형태로 변환
mean = df[df.bmi.notnull()].groupby(df.age//10 *10).bmi.mean()
dic = { x:y for x,y in mean.items()}
# 결측치 매핑
df.loc[df.bmi.isnull(),'bmi'] =(df[df.bmi.isnull()].age//10*10).map(lambda x : dic[x])
result = df.bmi.mean()
print(result)
avg_glucose_level 컬럼의 값이 200이상인 데이터를 모두 199로 변경하고 stroke값이 1인 데이터의 avg_glucose_level값의 평균을 소수점이하 3자리 까지 구하여라
df.loc[df.avg_glucose_level >=200,'avg_glucose_level'] =199
result = round(df[df.stroke ==1].avg_glucose_level.mean(),3)
print(result)