코딩/Jupyter

데이터 오류 없애기 #6

김재형재 2021. 2. 11. 00:07

1. 좋은데이터 기준

    1 - 1. 완결성

필수적인 데이터는 모두 기록되있어야 한다.

 

결측값: 채워져야 하는데 비어있는 값이다. 데이터프레임에서 NaN으로 표시된다.

 

 

 

    1 - 2. 유일성

값이 중복되면 안된다.

 

 

 

    1 - 3. 통일성

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

ex) kg, lbs, 띄어쓰기, 표기법 등등....

 

 

 

    1 - 4. 정확성

이상점: 박스그래프때도 잠깐 언급했었다. 정상적인 범주를 벗어나, 자료분석에 방해가 되는 데이터를 말한다.

 

 

 

2. 데이터 클리닝

    2 - 1. 완결성

결측값은 NaN으로 뜬다고 했다. 보자

 

변수.isnull() 결측값이 true라고 나온다.

 

변수.isnull().sum() 각 칼럼의 결측값 갯수를 말해준다.

변수.dropna() 이면 결측값을 제거한다. ( ) 안에 inplace = True를 적으면, 기존 데이터를 변경해주는 것이며, 하지 않으면 새로운 변수로 정의를 해줘야 한다.

결측값이 있는 row가 통째로 사라졌다.

 

변수.dropna(axis = 'columns') 이면, 결측값이 있는 칼럼이 사라진다.

변수.fillna(x) 이면 결측값을 x에 있는 값으로 바꿔준다. 0을 넣으면 다 0으로 바뀐다. 하지만 보통 평균값을 집어넣기때문에, 변수.fillna(변수.maen()) 식으로 많이 한다.

 

 

 

 

    2 - 2. 유일성

유일성은 중복이 되면 안된다고 했다.

 

- row 값이 겹치는 경우

변수.index.value_counts() 를 입력하면, row값의 갯수가 나오는데, 이때 1이아닌 2가 있다면, 중복된 값이 있는것이다. 

변수.drop_duplicates() 를 입력시, 알아서 중복된 값이 있는 row를 삭제한다.

 

- coulmn값이 겹치는 경우

변수.T 를 입력하면 row와 column값이 바뀌어서 나온다. 거기에 똑같이 drop_duplicates() 를 입력해준후 다시 .T를 입력하여 원래대로 해준다.

변수.T.drop_duplicates().T 이렇게 입력하면, 알아서 중복된 column을 삭제해준다.

 

 

 

    2 - 3. 정확성 

박스그래프 모양을 기억할것이다. 거기서 이상점은 동그라미로 표시가 됬었다. 

여기서 日로 생긴것이 25% ~ 75% 지점이며 IQR이라고  한다. 그리고 길게 대문자 I 처럼 뻗은것이 각각 1.5 X IQR한 것들이며, 이상점들은 그것을 벗어나는 값이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

변수['특정column값'].describe()  를 통해 25% 50% 75% 등의 값을 확인 가능하다.

변수['특정column값'].quantile(0.25) 를 입력해서 25%의 값을 확인 가능하다. 75%값 또한 마찬가지.

이것을 활용하여 IQR을 구할 수 있는데, 0.75 - 0.25를 해주면 확인가능하다. 

IQR = 0.75값 - 0.25 값

 

그렇다면 이상점 또한 식으로 나타낼 수 있다.

이상점 = (변수['칼럼값']<0.25값 - 1.5 * IQR) | (변수['칼럼값']>0.75값 + 1.5 * IQR) 

(여기서 |는 \키를 shift누르면 되고, 명제에서 '또한'이란것을 이걸로 표현한다. )

 

이런식이다.