안녕하세요 IT 범생이 Finn 입니다 ~ !
오늘은 데이터 분석의 핵심적인 과정인 데이터 전처리에 대해 정리해 보고자 합니다.
빅데이터, 데이터베이스 등의 개념이 보편화되며 많은 분들이 SQL, 빅데이터 분석기사 자격증 등을 공부하고있는데요. 어쩌면 데이터 분석의 전 과정 중에서 가장 생소하고 또 접해보지 못하셨을 영역이 바로 데이터 클리닝, 혹은 데이터 전처리 일 것으로 생각됩니다.
빅데이터 분석기사 시험 영역에서도 중요한 부분을 차지할 만큼 SQL, DB를 배우기 전에 꼭 알아야 하는 개념입니다!
그렇다면 데이터 전처리가 무엇이고, 어떻게 접근해 나가야 하는지 함께 알아보아요!
데이터 전처리가 중요한 이유
우리는 일상 속에서 다양한 형태로 데이터를 발생시키고 수집합니다. 기업은 유저의 모바일 사용 기록을 수집하고, 사회조사단체는 설문지로 의견을 수집하겠죠.
그런데 문제는, 이렇게 수집하는 데이터가 항상 완벽하지는 않다는 점 입니다. 설문지를 직접 배포해 보신 분이라면 알겠지만, 필수적인 영역에 값을 누락하거나 혹은 존재 불가능한 값을 입력하는 경우를 경험하셨을 겁니다 (1900년 출생 등). 더 나아가 모든 문제에 똑같이 답변하여 엉터리 설문으로 의심되는 경우도 있겠죠.
Garbage In, Garbage Out
엉터리 데이터를 사용하여 분석 전체가 엉망이 되는 경우는 단연 피해야 할 상황입니다. 이러한 엉터리 데이터를 사전에 확인하여, 분석에 알맞은 형태로 가공하는 것이 바로 데이터 전처리 혹은 data cleaning 입니다.
데이터 전처리를 함으로써 아래와 같은 장점을 얻을 수 있어요.
1. 잘못된 분석에 시간 낭비 하는 것을 줄일 수 있다
2. 잘못된 결과를 내리는 것을 막아준다! (분석가에게는 최악의 경우겠죠?)
3. (특히 고차원 알고리즘의 경우) 컴퓨터가 더욱 빠르게 분석할 수 있도록 도움을 준다
실제 현업에 계신 많은 데이터분석가 분들께서 가장 큰 시간과 노력이 들어간다고 말하는 것이 바로 데이터 클리닝, 혹은 데이터 전처리입니다. 그만큼 분석 결과를 좌우할 정도로 중요합니다!
그렇다면 데이터 전처리를 접근하고 처리해 나가야 하는 3가지 순서를 함께 알아보아요.
1. 먼지 찾기: 데이터에서 잘못된 부분을 확인하자
자신의 데이터에서 어느 부분이 어떻게 잘못되었는지를 확인하는 것이 첫 번째 단계에요.
특히, 아래 내용을 중점적으로 확인하세요:
- 어떤 데이터가 왜 결측된 것인가?: 값이 비어있는 행이 있는가? 데이터가 없는 열이 있는가?
- 데이터는 어떤 분포를 띄고 있는가?: 시각화를 적극 활용하자! 이상치를 plot 하여 확인하고, 본인의 데이터가 어떤 집단 혹은 범위를 더 많이 대변하고 있지는 않은지 살핀다. (e.g. 여성보다는 남성의 소비행동에 대한 결과가 아닌지?)
- 발생 불가능한 값이 있는가?: "생년월일: 남성", "생년월일: 1991년 8월 52일"
- 일관된 데이터 형태를 가지고 있는가?: 대문자 소문자, 전화번호 표기 방법 (01012345678 vs 010-1234-5678)
이 과정에서는 이상하거나 특이하다고 판단되는 모든것을 바로바로 정리하는 습관이 중요해요!
2. 먼지 털어내기: 잘못된 데이터를 고치자!
문제를 발견하였다면, 고치는 작업이 필요해요!
자신이 발견한 문제가 무엇이냐에 따라 해결방법이 달라지게 되는데, 오늘은 대표적인 3가지 경우를 소개하도록 할게요.
<발생 가능한 총 8가지 오류 종류>
- 결측: 값이 없는 경우
- 이상치: 지나치게 동떨어진 값이 있는 경우
- 데이터 형태의 문제
- 일관적이지 않은 데이터
- 오염된 데이터
- 유효하지 않은 데이터
- 중복된 데이터
- 구조적인 문제
결측값이 발생한 경우 접근 방법
1. 모든 결측값을 확인합니다. 0 / "0"/ 비어있는 문자열 / "#NA" / "NA" / None / NaN / NULL 모두 비어있는 값일 가능성이 있으니 주의깊게 확인하세요.
2. "비어있는 데이터가 중요한 정보를 담고 있는가?" 에 대하여 스스로 고민 후 결론을 내립니다.
3. 비어있는 데이터의 중요성에 따라 아래와 같은 조치를 취합니다.
- 빈 값이 중요하지 않은 경우: 값이 비어있는 행 혹은 열을 제거합니다
- 빈 값을 남겨두고 싶은 경우: 빈 값이 포함된 데이터를 별도 열로 구분하여 기재합니다
- 빈 값을 대체하고 싶은 경우: "가장 그럴듯한" 값으로 대체합니다. 평균 등 확률적으로 가능성이 높은 값을 선택합니다
이상치가 확인되는 경우 접근 방법
1. 이상치의 의미 확인: 이상치는 대개 굉장히 흥미로운 정보를 담고 있거나, 잘못된 수집 방법에 의해 발생합니다.
2. 수집 방법이 잘못되었다고 판단될 경우, 기존의 데이터 수집 체계를 점검합니다.
3. 흥미로운 정보를 담고 있다고 판단될 경우, 아래와 같은 조치를 취합니다.
- 이상치 제거: 평균은 이상치에 민감하기에, 전체 분석을 위해 이상치를 제거하는 방법
- 이상치 분리: 이상치들을 별도의 데이터 그룹으로 분리하고, 각각 분석일 진행합니다 (백화점 상위 1% VIP 고객의 소비행태를 별도 분석하는 경우)
- 이상치 유지: 이상치를 유지하되, 가중평균 등 별도 통계적 기법을 사용합니다.
데이터 형태가 문제되는 경우 접근 방법
문자열 (string)에서 확인이 필요한 부분:
- 대소문자 구분
- 줄바꿈 및 여백
- 명목 변수를 임의로 풀어쓴 경우
- 단순 오타
- 인코딩 방법
특히 인코딩의 경우, UTF-8을 표준으로 가져가는 것이 좋습니다.
날짜 및 시간에서 확인이 필요한 부분:
- 데이터가 DateTime 혹은 Unix timestamp object 인지 확인
- 국제 표준 시각 및 시차 반용 여부
3. 헹구고 반복하기: 끊임없는 반복과 개선
데이터 전처리는 1회로 끝나는 것이 아니라 위 1~2번 과정을 수차례 반복해 나가야 합니다. 분석가도 사람이라 빠트린 정보가 있을 수 있고, 새로운 시각으로 분석하며 데이터에 대하여 새로운 접근을 해 나갈 수 있기 때문입니다.
더불어, 데이터 전처리는 끊임없는 데이터 수집에 맞추어 지속적으로 해 나가야 하는 하나의 과정이자 절차입니다. 이런 노력과 수고를 덜기 위한 다음 단계는 "어떻게 이 과정을 자동화할 수 있는가"가 될 것입니다.
어떤가요? 이제 데이터 전처리에 대한 개념이 조금 잡히셨나요?
데이터 석사 과정을 밟으며 저 또한 가장 생소하고 어려웠던 부분이 데이터 전 처리인데요. 데이터 과학자를 꿈꾼다면 좋은 분석을 위해 꼭 필요한 과정인 만큼 끊임없이 연습하며 습득하는 것이 중요할 것 같습니다!
'🧑💻 IT 범생이 Finn > 🤖 데이터 석사 생존기' 카테고리의 다른 글
꼭 알아야 하는 머신러닝 필수 개념 (1): 기초용어 및 활용분야 예시 (0) | 2021.06.24 |
---|---|
빅데이터 분석기사 정보 및 필기 시험 후기 분석 (기출 문제 정리) (0) | 2021.06.21 |
딥러닝 필수개념: 텐서 TENSOR 이해하기 (0) | 2021.06.19 |
미국 조지아텍 OMSA 온라인 석사를 선택한 이유 (데이터 사이언스 석사) (31) | 2021.06.14 |
문과 마케터가 데이터 과학 석사를 지원한 이유 (데이터 사이언스 석사) (7) | 2021.06.14 |