결측값, 이상치 처리 실습
!pip install missingno
import missingno as msno
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
plt.rcParams['figure.dpi'] = 300
df = pd. read_csv("/content/sampled_car_prices.csv")
df.head()

msno.matrix(df)
plt.show()
msno.bar(df)
plt.show()

def is_emptystring(x):
return x.eq('').any()
df.apply(lambda x:is_emptystring(x))
year False
make False
model False
trim False
body False
transmission False
vin False
state False
condition False
odometer False
color False
interior False
seller False
mmr False
sellingprice False
saledate False
dtype: bool
박스플롯 시각화
# 모든 컬럼이 결측값인 행 제거
df_drop_all = df.dropna(how='all')
# 세개 이상의 컬럼이 결측값인 행 제거
df_drop_3 = df.dropna(thresh=3)
# 특정 컬럼(temp)이 결측값인 행 제거
df_drop_slt = df.dropna(subset=['transmission'])
# 한 컬럼이라도 결측치가 있는 행 제거
df_drop_any = df.dropna(how='any')
df_drop_any.isnull().sum()
plt.figure(figsize = (8, 6))
sns.boxplot(y = 'mmr', data = df)
plt.show()

output
count 99381.000000
mean 17700.907870
std 8872.205106
min 3650.000000
25% 11650.000000
50% 14650.000000
75% 22000.000000
max 178000.000000
Name: mmr, dtype: float64
count 98695.000000
mean 17349.771772
std 7703.856926
min 3650.000000
25% 11600.000000
50% 14600.000000
75% 21900.000000
max 53000.000000
Name: mmr, dtype: float64
plt.figure(figsize = (8, 6))
sns.boxplot(y = 'mmr', data = df_rmv)
plt.show()

def replace_outlier(value):
Q1 = df['mmr'].quantile(0.25)
Q3 = df['mmr'].quantile(0.75)
IQR = Q3 - Q1 #IQR 범위.
rev_range = 3 # 제거 범위 조절 변수 설정
if ((value < (Q1 - rev_range * IQR))):
value = Q1 - rev_range * IQR
if ((value > (Q3 + rev_range * IQR))):
value = Q3 + rev_range * IQR
# value = df['BMI'].median() # 중앙값 대치
return value
df['mmr'] = df['mmr'].apply(replace_outlier)
print(df['mmr'].describe())
plt.figure(figsize = (8, 6))
sns.boxplot(y = 'mmr', data = df)
plt.show()
'KHUDA' 카테고리의 다른 글
KHUDA Data business 04 (0) | 2024.04.03 |
---|---|
KHUDA Data buisness 03 (0) | 2024.03.26 |
KHUDA Data business 02 심화발제 (0) | 2024.03.20 |
KHUDA Data buisenss 02 (0) | 2024.03.20 |
KHUDA Data buiseness 01 practice (3) | 2024.03.18 |