• mksong8

[빅데이터] 데이터 정제 매뉴얼 - 2부




워크플로우

지난 포스팅에서 설명한 기준을 충족시키고 고품질 데이터를 생성하기 위해 워크 플로우를 3단계로 구성하였습니다.​


1. 발견 : 예상하지 못한, 부정확하고, 일치하지 않은 데이터를 찾아냅니다.

2. 정제 : 발견된 이상치를 수정합니다.

3. 검증 : 정제 후에 정확성을 검증하기 위해 결과를 추적합니다.

4. 보고 : 수정된 사항과 정제된 데이터의 품질에 관한 보고서를 작성합니다.​


순차적으로 설명하긴 했지만 계속적으로 반복되는 프로세스입니다. 수정 사항이 발생하면 검증을 한 후 발견 프로세스를 다시 진행합니다.​




검사

데이터를 검사하는 일은 시간이 많이 걸리는 작업이며 오류 데이터를 찾아내는 데이터 탐색 방법은 다양합니다. 다음과 같은 방법이 있습니다.


● 데이터 프로파일링​


데이터 프로파일링은 데이터에 대한 요약 통계를 말하는데 실제로 데이터 품질을 전반적으로 이해하는데 용이합니다. 예를 들어 어떤 열의 데이터 값이 미리 정한 표준이나 패턴을 유지하고 있는지 확인합니다. 열의 데이터 값이 문자 또는 숫자인지도 파악해야 합니다. 결측 값이 얼마나 있는지, 데이터에 고유한 값과 각 분포는 어떻게 되는지, 데이터 셋들간의 연결과 관계는 어떻게 되는지 알아보아야 합니다.​


● 시각화​​


평균, 표준편차, 데이터 값의 범위, 분위수와 같은 통계적 방법을 사용하여 시각화 함으로서 잘못된 데이터를 찾아낼 수 있습니다.​


예를 들어, 전체 국민의 소득을 시각화해보면 일부 데이터는 이상치로 나타남을 확인해 볼 수 있습니다. 어떤 국가는 이런 이상치가 다른 국가에 비해 많을 수도 있습니다. 이는 데이터가 잘못된 것이 아니라 실제로 그러한 데이터 분포를 갖는 경우도 있습니다.


정제

데이터 정제는 데이터 유형과 정제해야 할 내용에 따라 다른 기술이 적용됩니다. 해결 과제에 따라 알맞은 방법을 적용해야 합니다. 잘못된 데이터 값은 제거하거나, 수정 또는 변환해야 합니다.


● 관련 없는 데이터​


관련이 없는 데이터는 실제로 필요하지 않거나 데이터 셋에 맞지 않는 데이터를 말합니다. 예를 들어, 국민의 건강 상태에 대해 분석하는 경우, 개개인의 전화번호는 필요한 정보가 아닙니다. 또한 어떤 특정 국가에 대한 분석을 진행하려고 할 때, 특정 국가의 데이터가 아닌 다른 국가 데이터는 분석에서 제외해야 합니다. 수술받은 환자에 대한 분석을 할 경우에도 수술을 받지 않은 환자의 정보는 분석에서 제외해야 합니다.​


데이터가 확실히 필요하지 않다고 판단되면 삭제할 수 있습니다. 그렇지 않은 경우에는 변수 간의 상관관계를 살펴보아야 합니다. 변수들 간의 상관관계가 없다고 분석 결과가 나오더라도 일단 그 분야의 전문가에게 확인하는 것이 중요합니다. 데이터 분석 결과와 달리 분야의 관점에서는 상관관계가 있을 수 있습니다.​


● 중복​​


중복은 데이터 셋 안에서 반복되는 데이터를 말합니다. 다음과 같을 때 발생합니다.


​- 다른 소스에서 데이터가 통합된 경우

- 사용자가 실수로 데이터를 두 번 보낸 경우

- 온라인 예약 처럼 데이터를 수정하다가 실수로 두 번 예약이 된 경우

일반적으로 이런 경우 동일한 ID나 내용이 포함되게 됩니다. 이러한 경우에는 중복된 데이터를 삭제합니다.​


● 형식 변환​


숫자가 숫자 형식이 아니라 다른 형식(문자)으로 저장되는 경우도 있습니다. 날짜는 날짜 형식 또는 유닉스 타임스탬프로 저장되어야 합니다.​


범주형 값은 숫자를 변환하거나 숫자 형식으로도 저장할 수 있습니다. 이러한 정보는 각 칼럼의 요약 정보에서 확인할 수 있습니다. 지정된 유형으로 변환할 수 없는 데이터는 경고와 함께 미리 정의된 값이나 NA로 변환해야 합니다. 이 뜻은 변환된 값이 데이터 값으로 적정하지 않다면 미리 정의된 값으로 수정되어야 한다는 것을 의미합니다.​


● 구문 오류​​


공백 제거 : 문자열의 시작 또는 끝에 있는 공백 문자(스페이스)를 제거해야 합니다.


" hello world " => "hello world"


패드 문자열 : 공백이나 다른 문자로 문자열의 지정된 너비까지 채울 수 있습니다. 예를 들어 일부 숫자 코드의 경우 항상 자릿수가 같도록 앞에 0을 추가합니다.


313 => 000313 (6 digits)


오타 수정 : 실수로 다양하게 오타가 발생합니다.


Gender

m

Male

fem.

FemalE

Femle


이런 경우 이 변수의 범주는 5개로 생성되었지만 원래는 2개여야 합니다. male 또는 female. 그 외의 데이터는 오타로 수정이 필요합니다.​


오타의 경우 막대 그림 시각화 방법이 유용합니다. 데이터 값은 다르지만 의미하는 바는 같은 경우가 있습니다. 예를 들면, information_technology"와 "IT"는 같은 의미입니다.


위의 오타를 수정하기 위해서는 어떻게 해야 할까요? 각 데이터를 "male"또는 "female"에 수동으로 매핑하면 해결할 수 있습니다.


dataframe['gender'].map({'m': 'male', 'fem.': 'female', ...})




두 번째 방법은 패턴 일치를 이용하는 것입니다. 예를 들어 문자열이 M 또는 m으로 시작하면 "male"로 매핑을 합니다.


re.sub(r"\^m\$", 'Male', 'male', flags=re.IGNORECASE)


세 번째 방법은 퍼지 매칭을 이용하는 것입니다. 데이터 값과 가져야 하는 값과의 거리를 구하는 알고리즘을 이용하는 방법입니다. 이 알고리즘의 원리는 데이터 값에서 비교하는 값으로 변환하는데 필요한 작업 수를 계산합니다.


Gender male female

m 3 5

Male 1 3

fem. 5 3

FemalE 3 2

Femle 3 1


또한 도시 이름과 같이 다양한 형태 값이 주어지는 경우 오타의 경우처럼 다뤄야 할 것입니다. 예를 들어, "lisbon"은 "lisboa", "lisbona", "Lisbon" 등으로 입력되었을 수 있습니다.


City Distance from "lisbon"

lisbon 0

lisboa 1

Lisbon 1

lisbona 2

london 3

...


동일한 값을 의미하는 모든 값을 하나의 값으로 수정해야 합니다. 위의 경우 처음 4개의 문자열을 "lisbon"으로 바꾸어야 하겠죠.​


“0”, “Not Applicable”, “NA”, “None”, “Null”, “INF”은 모두 같은 의미의 값입니다. 이 값의 의미는 '해당 값없음'입니다.

● 표준화​​


데이터 정제는 잘못된 값을 찾아내고 그 값을 표준화된 값으로 변환하는 것까지 포함합니다. 문자열의 경우 소문자나 대문자로 문자를 통일해야 하고 숫자 값의 경우 측정값의 단위를 통일해야 합니다. 예를 들어 높이의 경우 센티미터나 미터로 단위를 통일해야 합니다. 그렇지 않으면 1미터를 1센티미터로 인식할 수 있고 이는 분석에 치명적인 영향을 줍니다. 날짜의 경우, 미국 버전과 유럽의 기입 양식이 다릅니다. 날짜를 시스템의 타임스탬프로 기록하는 것과 날짜를 사용자로부터 날짜 객체로 입력받는 것은 다른 문제입니다.​


● 스케일링/변환​​


스케일링은 데이터를 0-100 또는 0-1과 같이 정해진 범위의 데이터로 변환하는 것을 말합니다. 예를 들어, 성적을 GPA (0–5) 대신 백분율 (0–100)로 변환할 수 있습니다.​


또한 데이터의 시각화가 가능하도록 해주기도 합니다. 아웃라이어가 많거나 데이터가 특정 값에 몰려 있거나 값의 차이가 많이 날 경우 데이터의 시각화가 불가능할 수도 있습니다. 일반적으로 사용되는 변환 함수는 로그, 제곱 근, 역함수입니다.​


다른 단위로 측정된 데이터 값도 스케일링이 가능합니다. 예를 들어 SAT와 ACT 시험의 만점이 다르기 때문에 어떤 학생의 각 시험 점수를 동일하게 단순 비교할 수 없습니다. 이 경우에 SAT와 ACT 시험 점수를 각각 0과 1사이의 값으로 변환하여 비교합니다. 스케일링을 통해 다양한 분포를 보이는 데이터 값을 시각화하고 비교 가능하게 할 수 있습니다.​


● 정규화​


정규화란 데이터 값을 0에서 1사이의 값으로 변환하는 것을 말하는데 결과적으로 데이터가 정규분포를 따르도록 변환됩니다. 로그 함수나 다른 변환 함수를 이용합니다. 사용된 함수에 따라 데이터의 분포에 변화가 생길 수 있습니다. 예를 들어, '표준 Z 점수'나 '스튜던트 t-통계량' 변환은 데이터 분포를 유지해 주지만 로그 변환 함수는 그렇지 않습니다.​


다음 포스팅에서는 결측 치와 아웃라이어 처리 방법을 설명하고 검증에 대해 설명해 보도록 하겠습니다.



조회 26회

​고객센터

Tel: 02-596-8900  Fax : 02-6930-5709

10시 - 오후 7시(토, 일요일 및 공휴일은 휴무)

개인정보관리책임자 : 황재준   상호 : 유펜솔루션   대표자 : 김재훈   사업자등록번호 : 426-86-00939
주소 : (본사)대전광역시 유성구 엑스포로446번길 38, 3층 302호 / (지사 및 연구소)서울시 성동구 연무장 15길 11, B동 2층
​ⓒ 2019 UpennSolution Co., Ltd. All rights reserved.