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
반응형
'인공지능, 데이터분석 > [Numpy, Pandas] EDA, 문법' 카테고리의 다른 글
[Numpy] 집계함수 max(), sum().. (0) | 2023.05.11 |
---|---|
[Numpy] 넘파이 자료형의 다양한 데이터 타입 (0) | 2023.05.11 |
[빅분기] T1-2. 이상치를 찾아라(소수점 나이) (0) | 2023.01.02 |
[빅분기] T1-1. 이상치를 찾아라(IQR)활용하기 (0) | 2023.01.02 |
[pandas] 06-02. 결측값 제거(dropna) (0) | 2022.11.21 |