홈 PLAY 온라인 지원터수학교육수학영상 자료실 중고등학교
  • 인쇄하기
  • 스크랩

중고등학교

<고등수학, 생각넓힘> 빅데이터 분석1-빅데이터 게시글 상세정보
<고등수학, 생각넓힘> 빅데이터 분석1-빅데이터
작성자 융합인재부 이메일
조회 773 등록일 2021/11/17
첨부 빅데이터 분석1-빅데이터 대본.hwp 빅데이터 분석1-빅데이터 대본.hwp


<고등수학, 생각넓힘> 빅데이터 분석1-빅데이터
 
여러분 최근 화두가 되고 있는 기술 중 하나로 ‘빅데이터’, ‘빅데이터 분석’과 같은 말들을 많이 들어보았나요? 빅데이터란, 이름의 뜻 그대로 기존 방식으로 저장·관리·분석하기 어려울 정도로 큰 규모의 데이터를 의미합니다. 빅데이터의 크기는 현재 페타바이트 단위를 말합니다. 1PB(페타바이트)는 1024TB인데요.
기존에도 인터넷의 발전과 함께 많은 큰 데이터들이 존재하였는데 왜 새로운 빅데이터란 이름이 나오게 된 것일까요?
먼저, 기술의 발전과 함께 우리가 함께 쓰는 데이터의 양도 무섭도록 증가하고 있습니니다. 유튜브, 페이스북, 인스타그램, 카카오톡과 같이 우리가 일상 속에서 사용하는 것들은 모두 데이터입니다. 유튜브를 통해 동영상을 시청하고, 페이스북을 통해 친구의 근황을 알고 실시간으로 카카오톡을 통해 친구와 대화를 하는 것 모두 데이터를 통해서 이루어지며 데이터로 저장됩니다.
유튜브의 경우 전세계 10억명의 사용자가 매일 4억개의 동영상을 시청한다고 합니다. 데이터가 없다면 우리는 위와 같은 세상의 변화를 체감할 수 없을 것입니다. 기업은 데이터를 관리하기 위해 알래스카에 데이터센터를 지으면서까지 데이터를 저장한다고 합니다.
스마트폰의 혁신과 함께 변화한 세상은 더 많은 데이터를 내놓기 시작했고, 학자들은 과연 쌓여 있는 데이터들을 통해서 얻을 수 있는 게 있지 않을까라고 생각합니다.
그것이 바로 빅데이터 분석입니다. 현재 우리가 사용하고 있는 여러 분야에서 빅데이터가 활용되고 있는데 실제로 체감할 수는 없지만 빅데이터의 활용으로 우리는 조금 더 편리한 생활을 하고 있는 것입니다. 이런 예로, 서울시 야간버스 노선도, 신용평가모델, 카드사의 고객맞춤 상품 출시 등이 있습니다.
빅데이터의 활용 사례를 보면서 우리가 기술 발전의 혜택이 보이지 않는 곳에서도 많이 받는다는 것을 알 수 있습니다. 앞으로 빅데이터를 이용한 서비스를 제공하는 기업이 늘어날 추세이며, 우리가 이용하는 데이터 정보가 더 늘어나게 된다면 우리가 받는 혜택 또한 더 다양해질 것입니다. 결론적으로, 이제는 데이터가 우리 사회 전반의 기술의 기름과 같은 역할을 하게 되었고, 많은 빅데이터를 이용하여 자신에게 필요한 의미있는 정보를 찾을 수 있어야합니다.
데이터 전처리과정이란 수집한 데이터를 분석하기 좋게 데이터를 고치는 모든 작업을 말합니다. 대표적으로 3가지 전처리과정이 있는데요 첫 번째로는 데이터 유형변환입니다. 데이터 유형을 변환하거나 데이터 분석에 용이한 형태를 변환하는 것을 말합니다. 두 번째로는 데이터 여과입니다. 오류를 발견하여 보정하거나 삭제, 중복성 확인 등 데이터 품질을 향상시키는 작업입니다. 세 번째로는 데이터 정제입니다. 결측치가 있으면 변환을 시키고 이상치가 있으면 제거하는 등 데이터를 정제하는 것을 말합니다.
우리는 데이터 분석을 하기 전에 분석을 위한 의미있는 데이터를 만들어야 합니다. 이 전처리 과정은 데이터 분석하는 시간의 80~90프로 정도 시간이 소요되며 전처리된 데이터를 이용하여 데이터 분석하는데는 10~20%정도 시간이 소요됩니다. 그 만큼 데이터 전처리가 데이터 분석하는데 있어 중요하다는 것을 알 수 있습니다.
데이터 분석을 한 뒤 분석한 데이터를 시각화를 해주면 한눈에 파악할 수 있습니다. 이때 시각화 라이브러리를 이용합니다. 주로 이용하는 시각화 라이브러리는 넘파이, 판다스, 맷플롯립이 있습니다.
넘파이, 판다스, 맷플롯립 사이트에 들어가서 다운을 받을 수있으며 또는 파이썬을 다운받은 뒤 PIP환경에서 다운을 받을 수 있습니다.
명령프롬프트에 들어가서 pip install numpy, 넘파이 판다스 맷플롯립으로 다운을 받으면 됩니다.
지금부터 우리는 실습하기 위해서 주피터 노트북을 이용할껀데요. 주피터 노트북이란 파이썬에서 편리하게 프로그램을 할 수 있도록 해주고 즉시 즉시 결과값을 볼 수 있도록 해주는 웹기반 프로그램입니다. 웹환경에서 파이썬 프로그램을 할 수 있는겁니다. 웹환경에서 프로그램을 이용하는 이유는 데이터들이 인터넷에 많이 널렸습니다. 이런 데이터들을 웹환경으로 바로 불러들어와서 바로 분석할 수 있기 때문에 많이 이용합니다.
지금부터 주피터 노트북을 다운 받아보겠습니다. 똑같이 명령프롬프트를 켜서 다운을 받아봅니다.
다운을 받았으면 실행을 시켜 봅니다.

다운을 받았으니 본격적으로 데이터 전처리 실습을 해보겠습니다.
주피터를 실행하고 위의 뉴파일을 눌러 파이썬을 눌러줍니다.
제목을 데이터 전처리라고 하겠습니다.

우선 필요한 라이브러리를 가져오겠습니다.

import numpy as np 는 넘파이를 가져오고 넘파이를 np라고 하겠다 라는 의미입니다.
import pandas as pd 또한 판다스를 가져오고 판다스는 pd라고 한다는 의미입니다.
맷플롯립을 가져오고 plt, 시본을 가져오고 sns라고 하겠습니다.

그럼 타이타닉 데이터를 이용하여 데이터 전처리과정을 실습을 하겠습니다.
선생님이 첨부파일로 올려준 타이타닉 데이터를 살펴보겠습니다.
데이터 분석할 때 자세히 설명하고 지금은 데이터가 어떻게 구성이 되어있는지 간단하게 보고 넘어가겠습니다. 첫행은 생존여부, 티켓의 클래스, 성별, 나이, 함께 탑승한 형제와 배우자의 수, 함께 탑승한 부모, 아이의 수, 요금 등등이 있습니다. 각 행들은 한 사람의 각각의 정보가 담겨있습니다.

이러한 정보들의 설명은 다음영상의 데이터 분석할 때 자세히 설명하겠습니다.

데이터를 불러오겠습니다.
891개의 행과 15개의 열로 구성되었습니다.

데이터의 전체 정보를 살펴보기 위한 함수는 info()가 있습니다.
data.info()
null은 결측치를 말하는데 non-null이므로 891개의 정보가 존재하는 것을 말하고 있고 정보의 유형은 int64는 유형이 정수라는 것입니다. float64는 실수, _는 객체, bool은 참/거짓으로 나타내는 자료입니다.

데이터셋의 열 이름을 출력하는 함수 columns이 입니다.
data,columns
하면 열의 이름들이 출력이 됩니다.

특정 또는 모든 열의 이름을 바꾸는 함수 rename()이 있습니다.
data.rename(column={‘survived’:‘생존’}, inplace=True)
inplace=True 는 앞으로 바꾼 데이터로 대체하겠다! 라는 의미입니다.

data.columns 하면 열의 항목들이 나오고 survived가 생존으로 바뀐 것을 확인할 수 있습니다.

행이나 열을 제거하는 함수 drop() 이 있습니다.
data.drop(columns=’class‘, inplace=True) 하면 열의 class가 삭제가 됩니다.
891개의 행이 있고 15개의 열이었는데 14개의 열이 되었습니다.
만약 ‘embarked’와 ‘who’를 둘다 제거하려면
data.drop(columns=[‘embarked’, ‘who’], inplace=True)로 하면 됩니다.

중복데이터를 점검하는 함수 duplicated()가 있습니다.
data.duplicated()를 입력하면 각 행들이 중복된 데이터 인지 알 수 있습니다. True로 된게 중복된 자료를 나타냅니다.
이번엔 중복된 데이터가 뭔지 찾아봅시다.
data.[data.duplicated()]를 입력하면 중복된 데이터들을 찾을 수 있습니다.
107개의 행들이 중복된 데이터입니다.

중복된 데이터를 찾았으니 삭제를 해줘야겠죠?
아까 데이터를 삭제하는 함수는 drop 이었습니다.
data.drop_duplicates(inplace=True) 하고 data를 입력하면 중복된 데이터가 삭제된 데이터가 나옵니다. 891개 행이었는데 107개의 중복된 데이터를 삭제했으니 784개의 행이 되는 것을 알 수 있습니다.

중복된 데이터를 찾았으니 빈 데이터를 찾아볼까요?
빈 데이터(누락된 데이터)를 Null데이터라고 합니다. insull()함수를 사용하여 누락된 값이 있는 위치를 확인할 수 있습니다.
data,isnull()를 입력하면 값이 false로 나오면 null데이터가 아니고 값이 True로 나오면 null데이터 입니다. 이런것들이 null 데이터 되겠죠?

Null 데이터를 찾았으니 Null데이터가 얼마나 있는지 확인해봅시다. data.insull().sum() 함수를 이용하면 되는데요.
data.insull().sum()을 입력하면 나이에서 177개의 null데이터가, 탑승항구에서 2개의 null데이터가, deck은 688개의 null데이터가 있는 것을 알 수 있습니다.

null데이터를 찾고 얼마나 있는지 확인했습니다. 이것들은 빈 데이터 이므로 데이터 분석하는데 의미가 없으므로 삭제를 해줘야합니다. dropna() 함수를 사용하여 null값이 있는 행을 제거할 수 있습니다. data.dropna(inplace=True)를 입력하고 data.isnull().sum()를 입력하고 null값을 확인해보면 모든 항목에서 0개임을 확인할 수 있습니다.

.dropna() 함수를 사용하여 열을 제거할 수 있습니다. data.dropna(axis=1)을 입력하면 열을 제거할 수 있습니다. axis(엑시스)에 0으로 하면 누락된 값이 포함된 행을 제거 하는 거고 axis에 1으로 하면 누락된 값이 포함된 열을 제거할 수 있습니다.

null값을 삭제 할 수 도 있지만 다른값으로 대체할 수 도있습니다.
fillna()함수를 이용하여 null데이터를 다른 값으로 채울 수 있습니다.
null값에 나이의 평균 값을 채우고 싶으면 다음과 같이 입력을 하면 됩니다.
data[‘age’].fillna(data[‘age’].mean(),inplace=True)
입력한 다음 data.isnull().sum()을 입력하면 나이의 null값이 0임을 알 수 있습니다.

데이터 중에서 male, female처럼 분석하기 어려운 데이터 유형을 0, 1로 바꿔서 분석하기 쉽게 해야합니다. 따라서 행의 값을 대치하는 replace()를 이용하여 분석하기 쉬운 데이터 값으로 바꾸겠습니다. data.replace(‘sex’:{‘male’:0}, inplace=True), data.replace(‘sex’:{‘male’:0}, inplace=True) 는 성별에서 male은 0으로 female은 1로 값을 대치하겠다는 의미입니다.
입력하면 성별이 0,1로 바뀐 것을 확인할 수 있습니다.

이번엔 데이터를 요약해서 알려주는 describe() 함수가 있습니다. 각종 통계량을 요약하여 출력해주는 함수인데요.
data. describe()를 입력하면 타이타닉 데이터의 통계량을 한눈에 알 수 있습니다.

데이터 중에서 다른 값들에 비해 유난히 높은 값 또는 낮은 값을 이상값이라고 합니다.
‘fare’의 이상값을 확인을 해봅시다.
data[‘fare’].plot(kind=’box‘)을 입력하면 ‘금액’에서 하나의 값이 500 이상이 되는 값 즉 이상값이 존재하는 걸 확인했습니다.

이상값을 확인했으니 처리를 해보도록 하겠습니다. data.drop(data[data>=500].index, inplace=True) 500이상 된 값은 누락시키겠다 data[‘fare’].plot(kind=’box‘)를 입력하면 이상값이 없어진걸 확인할 수 있습니다.

여기까지 데이터 전처리과정에 대해서 알아봤습니다. 데이터 변환하기 , 데이터 제거하기, 중복데이터 확인, null데이터 확인 및 제거하기, 이상값 제거하기를 배웠습니다. 다음시간에는 타이타닉 데이터를 이용하여 데이터 전처리를 하고 본격적으로 분석해보겠습니다.
다음글 <고등수학, 생각넓힘> 빅데이터 분석2-데이터 전처리과정
이전글 <고등수학, 생각키움> 지수함수와 로그함수의 활용
자료관리 담당자
  • 담당부서 : 융합인재부
  • 담당자 : 김영주
  • 전화번호 : 043-229-1824