클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

Pandas 20 - 데이터 정제하기 실습해보기 본문

인공지능/Numpy & Pandas

Pandas 20 - 데이터 정제하기 실습해보기

huenuri 2024. 9. 11. 04:08

오늘은 잠이 잘 오지 않아서 평소보다 일찍 일어나서 새벽 공부를 시작해본다. 앞으로 5시간이나 더 공부할 수 있어서 정말 기쁘다. 2시간 정도는 판다스 공부를 하고 이제 오늘부터는 데이터 시각화 공부를 시작해보려고 한다. 이와 함께 데이터 분석 공부도 하게 될 것 같다.

사실 그동안 데이터 분석이 정말 지루하고 재미없는 분야라고 생각했는데 공부해보니 별로 그렇지 않다는 걸 알게 되었다. 오히려 수학을 좋아하는 내게 흥미로운 분야였다. 이제 공부를 시작해볼 것이다.


 

 

 

실습 6 - 데이터 정제하기


 

 

 

 

 

 특정 이벤트가 있는 날짜의 입장객 수가 평범한 날들에 비해 월등히 높은 것을 알 수 있다.


 

 

 

 

 

최하위권에 2018년 1월 24일부터 25일까지가 위치해있는데, 날씨가 맑음임에도 불구하고 아무리 평일이라도 입장객 수가 지나치게 낮은 것을 확인할 수 있다. 이유를 알아보면 해당 일차의 날씨 자체는 맑음이 맞지만, 강렬한 한파로 인해 서울의 최저기온이 영하 18도까지 내려갔던 기간이었다.

데이터를 정렬하면 추가 정보를 얻을 수 있고, 데이터 분석의 방향을 결정할 수도 있다.


 

 

 


 

 

 

 

인덱스가 깔끔하게 재정렬된 것을 확인할 수 있다. 이렇게 인덱스 재지정은 지금처럼 데이터를 정렬하거나, 일부 데이터를 삭제하는 등의 작업을 통해 인덱스가 흐트러졌을 때 수행해주면 유용한 작업이다.


 

 

 

 


 

 

 


 

 

 

 

 

데이터의 개수를 보면 대부분의 컬럼이 1086개의 데이터를 가지고 있지만 "날씨" 컬럼과 "청소년" 컬럼의 데이터가 부족한것을 확인할 수 있다. 잘보면 데이터의 갯수가 Non-Null Count라고 되어있는데, 즉 "날씨" 컬럼과 "청소년" 컬럼에는 Null이 존재한다는 뜻이다.

 

 

 

 

2016년 1월 4일의 데이터의 "청소년" 컬럼을 확인하면 NaN(Not a Number)라고 되어있다. 이는 0이 아니라 아예 공백, 즉 수집되지 않아서 어떤 값인지 알 수 없는 데이터이다. 이런 값들을 결측치 라고 한다.


 

 

 

 

데이터프레임의 각 원소가 결측치인지 아닌지를 검사한다. 결측치가 아닌 제대로된 값은 False, 결측치는 True로 채워진것을 확인할 수 있다. 하지만 저 표를 가지고는 결측치가 컬럼별로 몇개인지 확인할 수가 없다. 이 때 True는 1로, False는 0으로 계산되어 sum()을 활용해서 각 컬럼별로 전체값의 합을 구하면 결과값은 컬럼에 존재하는 True의 개수, 즉 결측치의 개수가 된다.

 

 

 

 

isnull()은 데이터프레임의 각 원소가 결측치인지 아닌지를 검사한다. 결측치가 아닌 제대로된 값은 False, 결측치는 True로 채워진것을 확인할 수 있다. 하지만 이 표를 가지고는 결측치가 컬럼별로 몇개인지 확인할 수가 없다. 이 때 True는 1로, False는 0으로 계산되어 sum()을 활용해서 각 컬럼별로 전체값의 합을 구하면 결과값은 컬럼에 존재하는 True의 개수, 즉 결측치의 갯수가 된다.

결측치를 처리하는 방법은 대표적으로 2가지가 있습니다. 하나는 결측치를 특정 값으로 채워넣는 것이고, 하나는 결측치가 존재하는 데이터를 삭제하는 것이다.


 

 

 


 

 

 

 

"청소년" 컬럼에 결측치가 있었던 2016년 1월 4일의 데이터가 아예 삭제된 것을 확인할 수 있다. 여기서는 결측치는 채워넣는 방식으로 df를 변형해보겠다.


 

 

 

 


 

 

 

 

하지만 계속해서 이런 name에러가 뜨는데 도저히 해결방법을 모르겠다. 

 

 

 

 

그래도 정답은 모두 잘 맞았으니 넘어가기로 하자.

 

 


 

 

학습을 마치고

새벽 일찍부터 공부를 하니 정말 좋았다. 이 실습은 많이 어려워서 1시간도 넘게 걸린 것 같다. 그래도 마침내 해결해서 다행이었다. 마지막에 에러가 떠서 좀 찝찝하기는 하지만 말이다.

이제 마지막 실습이 한 문제 남아있다.