from sklearn.datasets import load_iris
예제
# iris 데이터를 로드하여 결측치, 이상치를 검사하고 이상치가
# 있다면 각 품종별 평균값으로 대치해보세요
# 위의 검사를 마치고 품종별로 색상을 적용해 산정도를 그려보세요
# 산정도에는 3개의 변수만 사용할 수 있으므로 상관계수를 확인하여
# 높은 변수를 사용하여 차트를 그려보세요
# 산정도가 정상적으로 표시되면 그 데이터를 csv 파일에 저장해보세요
# sample_iris.csv
iris = load_iris()
sample_iris = pd.DataFrame(iris.data,columns=iris.feature_names)
# 결측치 검사
sample_iris.is_null()
sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | target | |
---|---|---|---|---|---|
0 | False | False | False | False | False |
1 | False | False | False | False | False |
2 | False | False | False | False | False |
3 | False | False | False | False | False |
4 | False | False | False | False | False |
... | ... | ... | ... | ... | ... |
145 | False | False | False | False | False |
146 | False | False | False | False | False |
147 | False | False | False | False | False |
148 | False | False | False | False | False |
149 | False | False | False | False | False |
# 이상치 시각화
plt.boxplot(df)
# 이상치 검출
rows_name = "sepal length (cm)"
desc = df.iloc[:,rows_name].describe()
Q1 = desc['25%']
Q3 = desc['75%']
IQR = Q3 - Q1
min_lim = Q1 - IQR*1.5
max_lim = Q3 + IQR*1.5
display(df[df.loc[:,rows_name]>max_lim])
display(df[df.loc[:,rows_name]<min_lim])
# 이상치를 평균으로 변경
rows_name = 'sepal width (cm)'
mean = df.loc[:,rows_name].mean()
df.loc[df[rows_name]>max_lim,rows_name] = mean
df.loc[df[rows_name]<min_lim,rows_name] = mean
# 상관계수
df.corr()
sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | target | |
---|---|---|---|---|---|
sepal length (cm) | 1.000000 | -0.123051 | 0.871754 | 0.817941 | 0.782561 |
sepal width (cm) | -0.123051 | 1.000000 | -0.400165 | -0.335913 | -0.400176 |
petal length (cm) | 0.871754 | -0.400165 | 1.000000 | 0.962865 | 0.949035 |
petal width (cm) | 0.817941 | -0.335913 | 0.962865 | 1.000000 | 0.956547 |
target | 0.782561 | -0.400176 | 0.949035 | 0.956547 | 1.000000 |
# 산점도 시각화
plt.scatter(df['petal length (cm)'],df['petal width (cm)'],c=df['target'])
# csv파일로 저장
df.to_csv('sample_iris.csv')