본문 바로가기
학습 log (이론)/python

'데이터 분석 2'

by abbear25 2020. 3. 10.

완결성 (Complteness)

필수적 데이터는 모두 채워져있어야 함

결측값(NaN, Not a Number) 확인, 채워져있어야 할 값의 누락을 확인

결측값이 존재하는게 의미가 있을 수 있음

아래와 같이 결측값을 제거함으로 완결성을 이룸

import pandas as pd
df = pd.read_csv('nan.csv', index_col=0)
df.isnull().sum()       #결측 값 true/false 확인, 결측값 개수 파악
df.dropna(inplace=True) #결측값 포함 된 행 제거, 기존 테이블 수정 True
#결측값 포함 된 열 제거, 기존 테이블 수정 True
df.dropna(axis='columns', inplace=True) 
df.fillna(0)            #결측값 다른 값인 0으로 대체
df.fillna(df.mean())    #결측값 평균 값으로 대체
df.fillna(df.median())  #결측값 중간 값으로 대체

 

유일성 (Uniqueness)

불필요한 중복 데이터가 존재하면 안됨

아래와 같이 중복 데이터를 제거함으로 유일성을 이룸

import pandas as pd
df = pd.read_csv('dust.csv', index_col=0)
df.index.value_counts() #각 값이 나오는 횟수로 중복을 확인
df.loc['07월 31일']      #상세 확인
df.drop_duplicates(inplace=True)   #중복 행 제거, 기존 테이블 수정 True
df = df.T.drop_duplicates().T      #행과 열 자리 변경, 중복 컬럼 제거, 다시 행과 열 자리 변경 후 저장
                                   #컬럼명은 동일하지만 값이 동일하여 중복으로 판단되는 컬럼 중복 제거

 

통일성 (Conformity)

데이터가 동일한 형식으로 저장되어야 함

 

정확성 (Accuracy)

데이터가 정확해야 함

데이터를 수집하는 단계에서 기준이 잘 못되면 부정확해질 수 있음

이상점 (Outlier)

다른 값과 심하게 떨어진 값으로 값의 정상 유무를 판단

이상이 있는 데이터라면 제거하거나 수정

이상이 없다면 분석에 방해가 되면 제거, 의미 있다면 보존

import pandas as pd
df = pd.read_csv('beer.csv', index_col=0)
df.plot(kind='box', y='abv')  #이상점을 확인하기 위한 플롯 그래프
df['abv'].describe()          #각 지점 확인
q1 = df['abv'].quantile(0.25)      #25%지점 가져오기
q3 = df['abv'].quantile(0.75)      #75%지점 가져오기
iqr = q3 - q1                      #iqr 구하기
outlier = (df['abv'] < q1 -1.5 * iqr) | (df['abv'] > q3 + 1.5 *iqr) #기본 이상점 찾기

df[outlier]                 #인덱싱하여 데이터 확인
df.loc[2250, 'abv'] = 0.055 #오류 데이터 수치 수정
df.loc[2250]                #정상 수정여부 확인

outlier = (df['abv'] < q1 -1.5 * iqr) | (df['abv'] > q3 + 1.5 *iqr) #수정 후 이상점 재확인
df[outlier]   #인덱싱하여 데이터 확인

df[outlier].index #인덱스 확인
df.drop(df[outlier].index, inplace=True) #오류 데이터 제거, 기존 테이블 수정 True

outlier = (df['abv'] < q1 -1.5 * iqr) | (df['abv'] > q3 + 1.5 *iqr) #수정 후 이상점 재확인
df[outlier]   #인덱싱하여 데이터 확인

관계적 이상점 (Relational Outlier)

두 변수의 관계를 고려했을 때 이상한 데이터

import pandas as pd
df = pd.read_csv('exam_.csv')
df.plot(kind='scatter', x='reading score', y='writing score')

df.corr() #상관계수 출력하여 관계 확인
df[df['writing score'] > 100] #점수이상 확인
df.drop(51, inplace=True)

df.plot(kind='scatter', x='reading score', y='writing score')

df.corr() #상관계수 출력하여 관계 확인
outlier = (df['writing score'] > 90)&(df['reading score'] < 40) #점수이상 확인
df[outlier]
df.drop(373, inplace=True)

df.plot(kind='scatter', x='reading score', y='writing score')
df.corr() #상관계수 출력하여 관계 확인
반응형

'학습 log (이론) > python' 카테고리의 다른 글

'파이썬 사용법' 흝어보기  (0) 2020.07.22
'웹 크롤링' 기본  (0) 2020.03.15
'데이터 분석'  (0) 2020.03.05
'통계 분석'  (0) 2020.03.04
'Seaborn'  (0) 2020.03.04