인공지능, 데이터분석/[Numpy, Pandas] EDA, 문법

[빅분기] T1-3. 결측치 처리, 결측치 비율확인(map, drop 활용)

마법사 코딩공주 2023. 1. 6. 16:13
728x90
반응형

<문제>
주어진 데이터에서 결측치가 80%이상 되는 컬럼은 삭제하고, 80%미만인 결측치가 있는 컬럼은 'city'별 중앙값으로 값을 대체하고 'f1'컬럼의 평균값을 출력하시오.


1. 라이브러리 및 데이터 불러오기

import numpy as np
import pandas as pd

df = pd.read_csv('/kaggle/input/bigdatacertificationkr/basic1.csv')
df

2. 결측치, shape 확인 및 결측치 비율 확인

df.isnull().sum()
df.shape # (100, 8)

# 결측치 비율 확인
df.isnull().sum() / df.shape[0]

# 80% 이상 결측치 컬럼 삭제
df.drop(['f3'], axis = 1)

3. 도시확인 및 도시별 중앙값

# 도시확인
# df['city'].unique() # array(['서울', '부산', '대구', '경기']
# 도시별 중앙값
seoul, busan, daegu, gg = df.groupby('city')['f1'].median()
seoul, busan, daegu, gg
--------------------------
(58.0, 75.0, 62.0, 68.0)

4. 결측치 중앙값 대체(map활용)

df['f1'] = df['f1'].fillna(df['city'].map({'서울' : seoul, '부산' : busan, '대구' : daegu, '경기' : gg}))

5. 'f1' 평균값 출력

print(df['f1'].mean()) # 66.22
728x90
반응형