분석을 위한 데이터는 Kaggle 사이트를 이용하면 쉽게 얻을 수 있습니다. 그러나 Kaggle에서 얻은 데이터라 하더라도 실제 분석을 위해서는 데이터 전처리가 꼭 필요합니다. 이번 글에서는 데이터 분석을 위한 전처리에 관해 설명해 보겠습니다.
| 데이터 전처리란? 데이터 정제 또는 전처리란 데이터를 분석할 수 있도록 변환하는 것을 말합니다. 데이터가 여러 소스에서 수집되면 대부분 바로 분석에 사용할 수 없는 형태로 수집이 됩니다. | 데이터 전처리는 왜 해야 하나요? 분석에 바로 사용할 수 있는 양질의 데이터를 얻는 것은 불가능에 가깝습니다. 결측 데이터가 있을 수도 있고, 정확하지 않은 값이 포함되기도 합니다. 이러한 데이터 질의 문제는 분석의 정확도를 떨어뜨리게 됩니다. 양질의 데이터가 분석의 정확도를 좌우합니다. 데이터는 우리의 도구이자 연장입니다. 데이터를 잘 연마하고 준비해야 정확한 분석 결과를 얻을 수 있습니다. | 시작하기 - 타이태닉 데이터 세트 Kaggle 사이트에서 데이터 세트를 다운로드하여 전처리해 보겠습니다. 데이터 전처리 전에 데이터에 대한 이해가 우선되어야 합니다. | 데이터 셋 기본 정보 타이태닉 데이터 세트는 타이태닉 승객에 대한 정보입니다. 타이태닉은 뉴욕을 향해 출발하였으나 1912년 4월 15일 침몰하여 비극적인 항해를 마감하였습니다. 다음과 같은 정보를 갖고 있습니다. · PassengerId: 승객 고유 ID · Survived: 생존 여부 (0 = 아니오; 1 = 예) · Pclass: 좌석 클래스 (1 = First; 2 = Second; 3 = Third) · Name: 승객 이름 · Sex: 승객 성별 · Age: 승객 나이 · SibSp: 형제/배우자 수 · ParCh: 부모/자녀 수 · Ticket: 티켓 번호 · Fare: 운임 · Cabin: 객실 · Embarked: 승선 항구명 (C = Cherbourg; Q = Queenstown; S = Southampton) 이제 다음 단계로 넘어가 보겠습니다. Kaggle 사이트에서 rain.csv, test.csv, gender_submission.csv 파일을 다운로드합니다. 판다스의 read_csv()를 이용하여 데이터 세트를 읽고 head()으로 데이터를 살펴보겠습니다. 데이터 세트를 좀 더 살펴보면, 891행과 12칼럼으로 이루어진 데이터입니다. 결측치가 있는 열값을 조사해 보니 나이 177, 객실 687, 승선 항구명 2이었습니다.
| 데이터 준비 데이터를 살펴보면서 데이터 분석에 필요한 인사이트를 얻을 수 있습니다. ● 인사이트 - '생존 여부'는 타깃 변수입니다. 예측해야 할 종속 변수입니다. - '나이', '객실', '승선항구명' 에는 결측값이 존재합니다. - '승객 고유 ID', '승객 이름', '티켓 번호'는 종속 변수 예측에 많은 역할을 하지 않습니다. - '형제/배우자 수', '부모/자녀 수'는 가족과 관련된 정보이므로 '가족수'라는 새로운 변수를 생성해서 사용하도록 하겠습니다. - '승객 성별', '객실', '승선 항구명'은 인코딩이 필요한 범주형 데이터입니다. 이렇게 파악한 정보와 인사이트를 바탕으로 데이터 전처리를 진행하겠습니다. ● 열 삭제 종속변수 예측에 기여도가 낮을 것으로 예측되는 '승객 고유 ID', '티켓 번호' 칼럼은 drop()을 사용하여 칼럼을 삭제하도록 하겠습니다. '나이', '객실', '승선 항구명'은 결측치가 있어 전처리를 진행해 보겠습니다. ● 새로운 변수 만들기 '객실' 열에는 687개의 결측값이 존재하지만, Deck 번호를 나타내는 정보가 들어 있기 때문에 일단 남겨 놓도록 하겠습니다. '형제/배우자 수', '부모/자녀 수'는 가족과 관련된 정보이므로 '가족수'라는 새로운 변수를 생성하도록 하겠습니다. '승객 이름'에서 타이틀 정보만 가지고 오도록 하겠습니다. '객실', '승객 이름' 칼럼을 삭제하고 필요한 정보만 추출하였습니다. ● 결측값 처리 '승선 항구명'은 두 개의 결측치가 있습니다. 그래서 가장 빈도수가 높은 'S = 사우 샘프 턴'으로 결측값을 대체하도록 하겠습니다. '나이'는 '승객 이름'에서 가지고 온 타이틀 별로 그룹화하여 계산한 평균값으로 결측값을 대체하였습니다. ● 범주형 자료 처리 머신러닝 알고리즘을 사용하기 위해서는 범주형 자료를 숫자 값으로 변환을 해야 합니다. 판다스와 sci-kit-learn으로 데이터를 변환해 보겠습니다. - 변환 - 레이블링 - 원핫인코딩 - 바이너리 인코딩 - sci-kit-learn 레이블 인코더 각각의 방법은 장단점이 있습니다. map()을 사용해 범주형 값을 숫자로 매핑해 보겠습니다. 범주형 자료의 값이 다양할 경우 sklearn.preprocessing 라이브러리의 LabelEncoder()를 사용하면 좋습니다. 범주형 데이터를 숫자형 자료로 변환해 줍니다. 이제 분석을 위한 데이터 준비가 완료되었습니다. 이제, 데이터 분석을 시작해 볼까요?
Comments