작업 1유형 : 뇌졸증 발생여부 예측

SOOYEON·2022년 6월 24일
0

빅데이터분석기사

목록 보기
33/36

뇌졸증 발생여부 예측

Q1.🌟

성별이 Male인 환자들의 age의 평균값은 ?

df['age'] = df['age'].str.replace('*','').astype('int')
result = df[df.gender =='Male'].age.mean()
print(result)

Q2.

bmi컬럼의 결측치를 bmi컬럼의 결측치를 제외한 나머지 값들의 중앙값으로 채웠을 경우 bmi 컬럼의 평균을 소숫점 이하 3자리 까지 구하여라

df['bmi'].fillna(df['bmi'].median(),inplace=True)
round(df['bmi'].mean(),3)

Q3.

bmi컬럼의 각 결측치들을 직전의 행의 bmi값으로 채웠을 경우 bmi 컬럼의 평균을 소숫점 이하 3자리 까지 구하여라

df['bmi'].fillna(method='ffill',inplace=True)
round(df['bmi'].mean(),3)

Q4.🌟

bmi컬럼의 각 결측치들을 결측치를 가진 환자 나이대(10단위)의 평균 bmi 값으로 대체한 후 대체된 bmi 컬럼의 평균을 소숫점 이하 3자리 까지 구하여라

1. Noise 데이터 int형 변환

df['age'] = df['age'].str.replace('*','').astype('int')

2. 결측치 제외 나이대별 평균값 계산 및 dictionary 형태로 변환

mean = df[df.bmi.notnull()].groupby(df.age//10 *10).bmi.mean()
dic = { x:y for x,y in mean.items()}

3. 결측치 매핑

df.loc[df.bmi.isnull(),'bmi']  =(df[df.bmi.isnull()].age//10*10).map(lambda x : dic[x])

4. 결과

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)

Q5.🌟

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)

0개의 댓글