구글 코랩(Google Colaboratory)은 구글에서 제공하는 Jupyter Notebook 입니다. 시스템을 구글 클라우드를 기반으로 하기 때문에 개인의 PC보다 좋은 성능 및 접근성을 제공합니다. 

딥러닝을 위해서는 성능 좋은 GPU가 필요한데 요즘 그래픽카드의 가격은 하늘 높은 줄 모르고 올라가고 있네요ㅜㅜ(요즘은 조금 안정된 것 같습니다.)

구글 클라우드 기반의 시스템을 이용하기 때문에 번거로운 설정 과정 없이 바로 사용할 수 있으므로 딥러닝을 학습하는데 많이 사용되고 있습니다.

준비물
  • 구글계정
  • 웹브라우저 : 구글 클라우드 시스템을 이용하는 것이므로 크롬(Chrome)을 추천
접속하기
 

Google Colaboratory

 

colab.research.google.com

에 접속하면 다음과 같은 화면이 나옵니다.

취소 버튼을 누르면, 아래와 같은 초기화면을 볼 수 있습니다.

위와 같은 방법 이외에도 구글 드라이브에 접속해서 계정에 작업 폴더를 만든 후, 그 폴더에서 Colab를 시작시킬 수도 있습니다. 

구글(www.google.co.kr)에 접속한 후 오른쪽 상단의 로그인을 이용하여 로그인 합니다.

로그인 후 자신의 아이콘 옆에 보면 점이 9개 찍힌 아이콘을 클릭한 후 드라이브를 선택합니다.

드라이브를 선택한 후 작업할 새로운 폴더로 이동하여 새로만들기를 클릭합니다.

더보기를 선택한 후 Google Colaboratory를 선택하면 됩니다. 화면에 Google Colabratory가 안보일 경우 연결할 앱 더보기를 선택하여 "colaboratory"를 검색한 후 설치하면 Google Colaboratory가 활성화됩니다.

Google Colaboratory를 선택하면 아래와 같은 화면에 진입할 수 있습니다.

 

드라이브 연결하기

구글 코랩은 구글 드라이브를 연결하여 사용할 수 있는데요. 접속 방법은 2가지가 있습니다. 거의 대부분 첫번째 방법을 이용하실텐데요. 간혹 2번째 경우를 이용하는 경우도 있습니다.

첫번째 방법은 UI에서 선택하여 연결하는 방법입니다.

코랩을 실행한 후, 좌측 폴더 아이콘(1)을 클릭합니다. 그리고, 구글 드라이브 아이콘(2)를 클릭합니다.

Google Drive에 연결을 클릭하면 아래와 같이 화면이 바뀌면서 드라이브 연결이 완료됩니다.

간혹 아래와 같은 화면이 발생하기도 하는데요. 이때 닫기를 누른 후 왼쪽의 세모를 클릭합니다.

실행하면 위와 같은 화면이 뜨는데요. 링크를 클릭하면 새로운 창이 아래와 같이 뜹니다.

드라이브를 연결할 계정을 선택하면

코드가 나오는데요. 이때 오른쪽의 아이콘을 클릭하면 자동으로 복사됩니다.

이전 탭으로 다시 돌아와 

Enter your authorization code: 

부분에 붙여 넣기를 하고 엔터를 누르면 드라이브 연결이 완료됩니다.

새로고침 아이콘을 누르면 drive가 연결됨을 확인할 수 있습니다.

다음에는 구글 코랩을 사용하는 방법 및 설정에 대하여 알아보도록 하겠습니다.

사용할 데이터 과학 방법론은 다음과 같이 여섯 단계로 구성되며 필요에 따라 특정 단계를 반복해서 수행 할 수 있습니다.

[1단계] 목표 설정

무엇을 분석할지, 결과가 어디에 왜 필요한지, 어떤 데이터가 필요한지 등등을 토대로 목표설정을 합니다.

 

[2단계] 데이터 수집

프로젝터에 필요한 데이터의 위치와 형태를 확인하고 원자료(raw data)를 수집합니다. 데이터 분석을 하는 주체가 데이터를 가지고 있는 경우도 많지만 그렇지 않은 경우 다음의 사이트 등을 참고하여 수집합니다.

사이트 설명사이트
http://data.go.kr 한국 정부에서 제공하는 공공데이터
http://aihub.or.kr 한국지능정보사회진흥원 제공 데이터
http://kostat.go.kr 한국 통계청에서 공개하는 데이터
http://opendata.hira.or.kr 한국 보건 의료 빅데이터 개방 시스템
http://localdata.kr 한국 지방행정 인허가 데이터
https://www.mcst.go.kr 한국 문화체육관광부 문화 데이터
http://data.seoul.go.kr 서울시 열린데이터 광장
https://data.gg.go.kr 경기도 공공데이터 개방 포털
http://data.worldbank.org 세계 은행에서 제공하는 개방데이터
http://open.fda.gov 미국 식약청 개방 데이터
http://data.gov 미국 정부의 공공데이터

위의 사이트 이외에도 많은 사이트에서 데이터를 제공하고 있습니다.

데이터 수집을 위한 다양한 기술이 있지만 많이 사용되는 기술은 다음과 같습니다.

수집 기술 설명 수집 데이터
크롤링 SNS, 뉴스, 웹 정보와 같이 인터넷에서 제공하는 데이터를 수집 웹 데이터
Open API 서비스, 데이터 등을 어디서나 쉽게 이용하도록 개방된 API로 데이터 수집방식 제공 실시간 수집 데이터
RSS 웹 기반의 최신 정보를 공유하기 위한 XML 기반의 콘텐츠 배급 프로토콜 XML 기반 웹 콘텐츠

 

[3단계] 데이터 준비

데이터 준비는 수집한 원자료(raw data)의 품질을 높이기 위해 정제 후 사용 가능한 형태로 가공하는 단계입니다. 수집한 데이터를 다음 단계에서 사용할 수 있게 오류를 여과하거나 수정하여 정제하고 필요에 따라서는 데이터를 통합하거나 형태를 변환하는 과정을 말합니다.

데이터 준비에 필요한 작업은 다음과 같습니다.

종류 설명
데이터 여과 오류 발견, 보정, 삭제, 중복성 확인 등의 과정을 통해 데이터 품질 향상
데이터 정제 결측치 채우기, 이상치 식별 또는 제거, 잡음이 섞인 데이터는 평활화하여 데이터 불일치성을 교정
데이터 통합 데이터 분석이 용이하도록 유사 데이터 및 연계가 필요한 데이터를 통합
데이터 축소 분석 시간 단축을 위해 분석에 사용하지 않는 항목 제거
데이터 변환  데이터 분석에 용이한 형태로 데이터 유형을 변환
 정규화(normalization), 집합화(aggregation), 요약(summarization), 계층 생성 등의 방법 활용

 

[4단계] 데이터 탐색

데이터와 변수 간의 관계나 상호작용을 이해하기 위한 단계입니다. 변수 간의 관련성, 데이터의 분포, 편차, 패턴 존재 여부를 확인하는 탐색적 데이터 분석(EDA-Exploratory Data Analysis)라고 합니다. 데이터를 쉽게 이해하기 위해 시각화하는 그래픽 기법을 많이 사용합니다.

 

[5단계] 데이터 모델링

이전 단계에서 얻은 데이터 탐색 결과로 프로젝트에 대한 답을 찾는 단계입니다. 변수를 선택하여 모델을 구성하고 실행 및 평가하는 과정을 반복 수행하여 문제 해결 모델을 완성합니다. 이때 분석하려는 데이터의 특성과 목적에 따라 모델 유형을 선택할 수 있습니다.

유형 종류 및 설명
통계
분석
모델
전통적인 분석기법. 주로 수치형 데이터에 사용하며 확률을 기반으로 현상을 추정 및 예측
기술통계 자료를 대표하는 평균, 중앙값, 최빈값, 자료의 분포를 나타내는 표준편차, 사분위 수 등을 구할 수 있음
상관분석 두 변수가 어떤 선형적 관계를 갖는지 분석하는 기법. 두 변수의 연관성을 확인하기 위해 실시.
회귀분석 연속형 변수에 대해 독립변수와 종속변수 사이의 상관관계에 따른 수학적 모델인 선혁적 관계식을 구하여 어떤 독립 변수가 주어졌을 때 이에 따른 종속 변수를 예측하거나 수학적 모델이 얼마나 잘 설명하고 있는지를 판별하기 위한 적합도를 측정하는 분석기법
분산분석 두 개 이상 다수의 집단을 비교할 때 집단 내의 분산, 총평균과 각 집단의 평균의 차이로 생긴 집단 간 분산의 비교를 통해 만들어진 F-분포로 가설을 검증하는 기법
주성분분석 다양한 변수를 분석하는 다변량 분석으로 많은 변수로부터 몇 개의 주성분을 추출하는 기법.







패턴인식, AI, 머신러닝, 딥러닝 등을 이용하여 대용량 데이터에 숨겨진 데이터 간의 상호 관련성 및 유용한 정보를 추출하는 기법
예측 대용량 데이터 집합 내의 패턴을 기반으로 미래를 예측(또는 수요를 예측)
분류 일정한 집단에 대해 특정한 정의로 분류 및 구분을 추론
군집화 ● 구체적인 특성을 공유하는 자료를 분류
● 미리 정의된 특성에 대한 정보를 가지지 않는다는 점에서 분류와 다름
패턴분석 동시에 발생한 사건 간의 상호연관성을 탐색(ex. 장바구니 속 상품의 관계)
순차
패턴분석
연관 규칙에 시간 개념을 반영하여 시계열에 따른 패턴의 상호연관성을 탐색







텍스트 기반 데이터로부터 새로운 정보를 발견할 수 있도록 정보 검색, 추출, 체계화, 분석을 모두 포함하는 텍스트 처리 과정 및 기법
소셜
네트워크
분석모델
언어 분석 기반의 정보 추출을 통해 대용량의 소셜 미디어 데이터에서 이슈를 탐지하고 시간 경과에 따라 이슈가 유통되는 전체 과정을 모니터링하고 향후 추이를 분석하는 기법

 

[6단계] 활용

위의 여러 절차에 의해 실시한 데이터분석을 사용하는 단계이다.

 

파이썬을 통해 데이터 분석을 할 때, Pandas를 빼 놓고 이야기 할 수 없습니다. 데이터 분석을 할 때 여러 라이브러리를 사용하는데요. 그 패키지 들 중 R의 Dataframe 데이터 타입을 참고하여 만든 것이 바로 Pandas의 Dataframe입니다. Pandas는 Dataframe을 주로 다루기 위한 라이브러리입니다.

데이터 분석을 위한 첫번째 단계인 파일 읽어오는 것을 해보도록 하겠습니다.

가장 기본이 되는 CSV파일을 불러오는 방법을 알아보도록 하겠습니다.

CSV파일은 comma separeted values의 줄임말로 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일입니다.

CSV파일이라고 모두 쉼표(,)로 구분되는 것은 아닙니다.

아래 보이는 파일은 콜론(;)을 이용하여 구분을 하였네요.

각 데이터를 구분하는 쉼표(,), 콜론(;) 등을 구분자라고 합니다.

import pandas as pd df = pd.read_csv('파일 경로', sep='\,', header=0 engine='python')

sep는 구분자를 표시하는 파라미터입니다. 기본값은 쉼표(,)이구요. 만약 데이터가 콜론(;)을 구분자로 사용하였으면 sep='\;' 이라고 작성하면 됩니다.

간혹 메모장에서 tap을 구분자로 하여 만든 TSV파일이 데이터 파일인 경우 read_csv를 이용하여 파일을 읽고 구분자를 sep='\t'로 지정하시면 됩니다.

header는 열 이름으로 사용할 행의 번호를 입력합니다. 기본값은 0이구요. 즉, 기본값은 데이터프레임의 맨 윗줄에 각각의 열에 대한 이름이 적혀있는 파일을 읽어온다는 뜻입니다. 만약 10행에 각 열의 이름이 적혀있으면 header='10'으로 작성하시면 됩니다.

본인이 읽고자 하는 데이터에서 맨 윗 줄에 각각의 열에 대한 이름이 적혀있으면 입력하지 않아도 괜찮습니다.

engine은 데이터 파일을 읽어올 언어가 어떤 것인가를 기록하는 것인데요. 일반적으로는 잘 입력하지 않습니다.

하지만 웹 주소를 이용하여 파일 경로를 지정하는 경우에는 다음과 같은 메시지가 나오는데요. 그때는 engine를 이용하여 입력을 해주는 것이 좋습니다.

# 서버에서 직접 파일 가져오기
red_df2 = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv', sep='\;')
/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:3: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators (separators > 1 char and different from '\s+' are interpreted as regex); you can avoid this warning by specifying engine='python'. This is separate from the ipykernel package so we can avoid doing imports until

일반적인 파라미터는 이정도 입니다.

read_csv에 대한 더 많은 파라미터를 자세하게 확인하고 싶으면 아래 링크를 확인하세요~

 

pandas.read_csv — pandas 1.3.2 documentation

Delimiter to use. If sep is None, the C engine cannot automatically detect the separator, but the Python parsing engine can, meaning the latter will be used and automatically detect the separator by Python’s builtin sniffer tool, csv.Sniffer. In addition

pandas.pydata.org

 

이제 엑셀파일을 불러오는 방법을 알아보도록 하겠습니다.

Pandas에서는 xls, xlsx, xlsm의 파일을 읽어올 수 있습니다.

import pandas as pd df = pd.read_excel('파일경로', sheet_name='0', header=0)

sheet_name은 데이터 프레임인 엑셀 파일에서 몇 번째에 있는 sheet를 불러올지를 선택하는 것 입니다. 기본값은 sheet_name='0' 이구요. 이는 첫번째 sheet를 불러온다는 의미입니다. 만약 두번째 sheet를 불러온다면 sheet_nama='1'이 되겠지요.

header는 read_csv의 header와 동일합니다.

일반적인 파라미터는 이정도 입니다.

read_excel에 대한 더 많은 파라미터를 자세하게 확인하고 싶으면 아래 링크를 확인하세요~

 

 

pandas.read_excel — pandas 1.3.2 documentation

Additional strings to recognize as NA/NaN. If dict passed, specific per-column NA values. By default the following values are interpreted as NaN: ‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’, ‘-NaN’, ‘-nan’, ‘1.#IN

pandas.pydata.org

 

matplotlib는 파이썬을 이용한 데이터분석에서 빼놓을 수 없는 시각화 라이브러리입니다.

matplotlib를 토대로 좀더 개선하여 만든 seaborn 라이브러리도 있지만 기본적으로 matplotlib를 이해하는 것이 중요하다고 생각합니다.

matplotlib는 2002년에 프로젝트가 시작되었다고 하니 엄청 오래된 고인물이네요..ㅎ 그러다 보니 인터페이스 자체가 투박한 상태입니다. 하지만 matplotlib에서는 본인이 원하는 대로 기본스타일을 변경하여 사용 할 수 있는데요.

이번 글에서는 stylesheet을 바꾸는 방법 및 종류에 대하여 알아보도록 합시다.

stylesheet를 변경하기 위해서는 다음과 같이 입력합니다.

import matplotlib.pyplot as plt 
plt.style.ues('stylesheet이름')

 

다음은 각각의 stylesheet에 대한 예시 입니다.

plt.style.use('bmh')

 

 

plt.style.use('classic')

 

plt.style.use('dark_background')

 

plt.style.use('fivethirtyeight')

 

plt.style.use('ggplot')

 

plt.style.use('grayscale')

 

plt.style.use('seaborn-bright')

 

plt.style.use('seaborn-colorblind')

 

plt.style.use('seaborn-dark')

 

plt.style.use('seaborn-dark-pallette')

 

plt.style.use('seaborn-darkgrid')

 

plt.style.use('seaborn-deep')

 

plt.style.use('seaborn-muted')

 

plt.style.use('seaborn-notebook')

 

plt.style.use('seaborn-paper')

 

plt.style.use('seaborn-pastel')

 

plt.style.use('seaborn-poster')

 

plt.style.use('seaborn-talk')

 

plt.style.use('seaborn-ticks')

 

plt.style.use('seaborn-white')

 

plt.style.use('seaborn-whitegrid')

 

+ Recent posts