일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- value_counts
- violinplot
- lmplot
- 혼공학습단
- matplotlib
- 동적할당
- const
- 클래스
- boxplot
- catplot
- Axis
- c++
- seaborn
- stripplot
- STR
- histplot
- 혼공단
- class
- LOC
- 한빛미디어
- 포인터
- 혼공파
- df.t
- swarmplot
- 열혈c++
- plot
- 구조체
- bins
- expand=true
- 참조자
- Today
- Total
yEverything
데이터 클리닝-정확성 본문
%matplotlib inline
import pandas as pd
df = pd.read_csv('beer.csv', index_col=0)
df.head()
beer.csv를 읽자.
맥주에 대한 데이터들이다.
df.plot(kind='box', y='abv')
abv에 대해 박스 플롯을 그려본다.
뭔가 이상하다.
df['abv'].describe()
통계값들 보기.
df['abv'].quantile(0.25)
quantile(0.25)를 하면 박스 플롯에서 25%인 지점에 대한 값을 바로 알 수 있다.
75% 지점도 같은 방식으로.
q1 = df['abv'].quantile(0.25)
q3 = df['abv'].quantile(0.75)
iqr = q3 - q1
위와 같이 저장하기.
condition = (df['abv'] < q1 - 1.5 * iqr) | (df['abv'] > q3 + 1.5 * iqr)
이런 조건을 만들고,
df[condition]
이거에 해당하는 값 찾기.
3개의 값들이 나왔다.
df.loc[2250, 'abv'] = 0.055
2250의 abv가 혼자 너무 높다. 잘못 입력된 것 같다. 위와 같이 수정해준다.
df.loc[2250]
잘 수정됐나?
확인.
condition = (df['abv'] < q1 - 1.5 * iqr) | (df['abv'] > q3 + 1.5 * iqr)
df[condition]
다시 조건에 해당하는 값들 찾기.
고친 값은 없어졌고 아직 두 개 남았다.
df[condition].index
df.drop(df[condition].index, inplace=True)
해당 인덱스를 전달해서 드롭한다.
다시 확인해보면 이제 저 조건에 해당하는 데이터들은 없는 것을 알 수 있다.
이렇게 이상점들을 없애고 나서 다시 플롯을 그려주자.
df.plot(kind='box', y='abv')
오 이제 좀 그래프가 괜찮다.
df_exam = pd.read_csv('exam_outlier.csv', index_col=0)
df_exam.plot(kind='scatter', x= 'reading score', y='writing score')
exam_outlier.csv파일을 df_exam에 저장하고 읽기 점수와 쓰기 점수에 대한 scatter 플롯을 그려본다.
얘도 이상점들 때문에 그래프가 좀 이상하다.
df_exam.corr(numeric_only=True)
상관계수 보기.
df_exam[df_exam['writing score'] > 100]
그래프에서 보면 쓰기 점수가 100점이 넘는 점이 있다. 이걸 찾자.
아니 100점 만점인 거 같은데 혼자 680점이다.
df_exam.reset_index(inplace=True)
몇 번째인지 안 보여서 reset_index를 해준다.
51번째 데이터임을 알 수 있다.
df_exam.drop(51, inplace=True)
없애자.
오 아까보다 괜찮긴 한데 저 왼쪽이 좀 거슬림.
상관계수가 조금 수정되었다. 이상점을 제거했더니 상관계수가 커진 것을 알 수 있다.
condition = (df_exam['writing score'] > 90) & (df_exam['reading score'] < 40)
df_exam[condition]
위 조건에 해당하는 데이터 찾기.
읽기 점수가 너무 낮다. 없애주자.
df_exam.drop(373, inplace=True)
없애기.
이제 좀 괜찮다.
상관계수가 또 커졌다. 이상점들을 지우니 관련도가 더 높아진 것을 알 수 있다.
'Data_analysis > Google_colaboratory' 카테고리의 다른 글
데이터 클리닝-유일성 (0) | 2024.05.03 |
---|---|
데이터 클리닝-완결성 (0) | 2024.05.03 |
데이터 합치기 (0) | 2024.05.03 |
카테고리로 분류 (0) | 2024.05.03 |
문자열 필터링 (0) | 2024.05.03 |