yEverything

데이터 클리닝-정확성 본문

Data_analysis/Google_colaboratory

데이터 클리닝-정확성

yEvery 2024. 5. 3. 21:27
%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