[결측치 탐색 및 처리]

다음은 결측치 관련 처리 작업을 학습할 것이다.

결측치를 처리해주는 방법은 여러가지가 있다.

대체, 삭제 등이 있는데 위에서 언급했듯 삭제는

신중해야 한다. 데이터 하나하나가 중요하기 때문이다.

 

사진 삭제

사진 설명을 입력하세요.

결측치 유무를 검색하는 코드는 isnull()이다.

isnull은 기본적으로 True/False를 반환하기 때문에

(null값이면 True, 아니면 False)

isnull을 합친 결과를 출력하는 의미로 위와 같이 짜준다

발생장소_구에 null값이 있음을 확인했으므로

해당 컬럼에 대한 처리가 필요함을 알 수 있다.

 

발생장소_구를 불러와보면

대표사진 삭제

사진 설명을 입력하세요.

NaN으로 표기된 null값임을 확인할 수 있다.

우린 여기서 세종특별자치시는 '구'없이 바로 '동'인지

확인이 필요하다.

마찬가지로 발생장소_동 이 나성동인 것을 출력해보니

세종특별자치시는 '구'없이 바로 '동'임을 알 수 있다.

 

그럼 결측치 처리 작업을 해주어야한다.

널 값에 해당하는 컬럼과 전체 데이터를 비교했을 때

'세종특별자치시'의 비율이 압도적으로 많으므로

널 값을 '세종특별자치시'로 대체하면 된다.

 

fillna함수를 활용해 대체하고 위에서 확인했던

'번호'컬럼의 null행을 확인해보면

다음과 같이 올바르게 적용됐음을 알 수 있다.

 

[이상치 관리]

다음으로 구별 건수에 대해 처리를 해보려고한다.

valuecount로 구별 건수를 세어봤을 때

위와 같은 결과를 얻을 수 있다.

대부분의 구는1만건 이상의 건수를 가지고 있지만

아래 5개는 더 분석해서 이유를 알아내면 좋을 것이다.

경기도의 '발생장소_구"를 확인했을 때

시/구/동이 모두 동일함을 알 수 있다.

다른 지역도 그런지 발생장소_동 or 시를 확인해보면

아래와 같은 데이터를 볼 수 있다.

따라서 발생장소_구가 경기도인 행은

이상치라는 것을 알 수 있다.

(같은 이유로 경상남도도 이상치임)

 

[groupby]

지역데이터는 특히 시에 해당하는 구, 구에 해당하는 동

즉, 하위 데이터들이 많다.

따라서 그룹화 해 처리한다면 효율적인 작업이 가능하다

분석 목적에 따라 달라지겠지만

'시'를 그룹화하기엔 간소화되어 상세하지 못한

결과가 나오고 ,

'동'을 그룹화하기엔 너무 많은 데이터들이 나와

알아보기 힘들 수 있기에

'구'을 기준으로 그룹화해볼 예정이다.

 

'구'를 그룹화해 그 건수를 세어주면

위와 같은 결과를 얻을 수 있다.

count는 각 컬럼에 해당하는 데이터의 수를 나타낸다.

어차피 건수는 각 구별로 동일하므로

각 행의 데이터 수는 컬럼별로 동일하다.

따라서 size로 구에 해당하는 데이터 수만

그룹화 해줄 수 있다.

 

우리는 시에 해당하는 모든 구를 암기하고 있지 않다.

따라서 어떤 시에 해당하는 구인지

"이중그룹화"를 해줄 필요가 있다.

 

위 그룹화 코드에서

이렇게 추가해주기만 하면된다. 대괄호가 중요하다.

사실, 하나의 요소도 대괄호에 묶어서 표현할 수 있다.

(나는 요소가 하나일 때도 대괄호에 묶어서 한다)

이 코드를 해석하자면 아래와 같다.

1. new 데이터프레임을 그룹화하고 싶다.

2. 발생장소_시를 기준으로 그룹화하고

3. 2를 한후 발생장소_구를 기준으로 한번 더 그룹화

4. + 위 컬럼들을 번호 컬럼의 데이터 개수를 기준으로

그룹화해줘

 

처리를 마친 df_new를 double_grouped라는

새 변수에 할당해준 후 판다스의 데이터프레임에

넣어주면 위와 같은 깔끔한 프레임으로 볼 수 있다.

 

 


이상치와 결측치를 처리하는 과정을 학습했다.

기본적이고 쉽다고 생각한 과정인데

중요한 작업이라고 하니 뭔가 자신감이 생겼다랄까.

내가 다른 데이터를 가지고 해도 충분히 할 수 있다는

생각이 들었다.

 

다음 포스팅에서는 시각화를 해보려고한다.

 

https://mcode.co.kr/

 
 

 

 

(메타코드M의 서포터즈 활동으로

강의 수강권을 제공받아 쓰는 글입니다.)