[모두의 데이터분석 With 파이썬] Unit.02 리뷰 / 주피터, 코랩
Unit.02 서울의 기온데이터 분석하기
이번 유닛은 실제 코드를 입력하고 실행할 IDE 환경에 대해 학습한다.
일단, 아나콘다와 크롬을 설치했다면 주피터 노트북(Jupyter Notebook)을 알아보자.
노트북(notebook)이라고 하니까 우리가 아는 노트북에서 따온 말인줄 아는 사람도 있겠지만 사실 해외에서 노트북이라는 명칭은 우리가 아는 노트(note)와 같다. 영어권에서는 랩탑(laptop)이 노트북에 해당하는 말이다. 굳이 명칭 설명을 하는 이유는 주피터의 특성이 노트와 흡사하다는 것을 알려주기 위해서이다.
주피터(Jupyter)는 아나콘다(Anaconda)를 설치하면 자동으로 설치되는 오픈소스 기반의 웹 어플리케이션이다. 파이썬을 비롯한 40여 개 이상의 프로그래밍 언어로 '코드(code)'를 작성하고 실행하는 개발환경을 제공한다. 즉, 통합개발환경(IDE,Integrated Development Environment)이라고 보면 된다.
주피터의 장점은 파이썬으로 작성한 여러 개의 코드와 실행 결과를 하나의 문서처럼 관리 가능하고, 데이터 분석을 위해 여러 종류의 라이브러리를 불러온 후 일부 코드의 실행 결과를 확인 가능하다는 것이다. 앞서 말했듯 주피터는 문서(note)의 특성을 구현한 IDE이다.
또한 pdf 파일 등으로 코드를 문서화해서 다른 사람들과 공유하기 편리하기 때문에 연구자들이나 대학에서 자주 쓰인다.
여기서 잠깐!
개발을 드문드문 해본 사람들은 IDE(Intergrated Development Enviroment, 통합개발환경)에 집착하는 경우가 많은데, 그 이유가 배우는 사람은 아무것도 모르는데 책마다 쓰라는 IDE가 전부 다르기 때문(...) 나같은 경우에도 처음 개발을 배울 때, Visual Studio, 주피터(Jupyter), 코랩(Colab), 파이참(Pycharm), R Studio 등 여러가지를 반강제로(?) 써야만 했다. IDE마다 또는 목적에 따라 약간의 차이는 있겠지만, 초보자들은 그냥 쓰라는 거 쓰는게 제일 좋다. 결국 다 비슷비슷하니까 겁먹지 말자. 모두 메모장의 고도화된 버전일 뿐이다. 아쉬운 점은 주피터의 경우 자동완성 추천 기능은 없기 때문에, 코드 한 줄 한 줄 신경써서 써야한다.
주피터 사용법은 간단한데 아나콘다를 켜고 주피터를 실행시키면 끝.
그.러.나.
나는 여기서 구글에서 제공하는 코랩(colaboratory)을 이용하려 한다. 코드파일을 문서처럼 관리가 가능하다는 점에서 주피터와 유사한 녀석으로 제공하는 기능 중에 고양이가 있어 귀엽기 때문이다.
코랩은 구글 드라이브와 구글 문서를 쓰는 사람이라면 쉽게 사용 가능한 개발환경으로 구글 문서를 쓰는 방법과 완전히 동일하다.
(이거...... 나중에 알게됐는데 이 결정이 큰 사단을 불러 일으켰다. 코랩이 한국어 설정을 제대로 지원하지 못하는 경우가 발생했기 때문, 역시 쓰라는 것 써야한다.)
코랩도 다음 기회에 제대로 소개해보는걸로 해보겠다.
사용하려면 이곳을 방문해보자 https://colab.research.google.com/
Google Colaboratory
colab.research.google.com
코랩 사용법과 소개는 일단 여기 https://ffoorreeuunn.tistory.com/244
[ 인공지능 ] Google Colab 이란? | Colab 사용하기 | Colab 기초 사용법
Google Colab 구글 코랩은 구글 colaboratory 서비스의 줄임말입니다. 브라우저에서 python을 작성하고 실행 가능합니다. 구글 코랩은 클라우드 기반으로 주피터 노트북 개발환경입니다. 코랩은 구글
ffoorreeuunn.tistory.com
자 이제 본격적으로 코드를 작성해볼 차례다.
파이썬은 CSV를 읽기 위한 모듈(미리 저장해놓은 함수, 변수, 클래스 모음)이 있는데, 여기에 데이터를 읽어오기 위한 reader()함수와 데이터를 저장하기 위한 writer() 함수가 존재한다.
여기서 우리는 다운받아 놓은 csv 파일 데이터를 읽어오기만 하면 된다.
보통 파일은 f로 정의한다. 예상했겠지만 file의 f가 맞다.
import csv #csv 파일 읽기 위한 모듈을 불러온다
f = open('/content/drive/MyDrive/Python Study/모두의 데이터 분석 with 파이썬/seoul.csv', 'r', encoding='cp949') #f 변수 = open() 함수로 csv 파일 오픈하기
data = csv.reader(f, delimiter=',') #data 변수 생성, csv 읽기 모듈 불러옴, f 변수 읽고, 구분자는 쉼표로
print(data) #print() 함수로 data 변수 읽기
f.close() #f 변수 닫기
이 책에서는 각 함수의 인자 기본값들을 일부러 보여 줬는데 앞으로는 사실 그럴 필요가 없다. 기본값을 나타내는 인자를 제거한다면
import csv
f=open('데이터위치')
data=csv.reader(f)
f.close
로 간단히 표현 가능하다.
import csv
f = open('/content/drive/MyDrive/Python Study/모두의 데이터 분석 with 파이썬/seoul.csv', encoding='cp949')
data = csv.reader(f)
for row in data: #for 반복문으로 data 변수로 저장된 CSV 데이터 하나씩 불러오기
print(row) #row 데이터 출력
f.close()
결과 값: ['2005-05-11', '108', '13.7', '12.1', '16.1'] ['2005-05-12', '108', '14.1', '11.6', '19.6'] ['2005-05-13', '108', '16.6', '10.1', '23.3'] ['2005-05-14', '108', '16.7', '13.3', '20.7']
여기서 행이 [](대괄호)로 묶여 있는 것을 알 수 있는데 대괄호로 둘러싸인 데이터를 'List(리스트)'라고 한다. (참고로 문자열은 작은따옴표로 둘러싸여 있다.)
따라서 각 행의 데이터는 리스트 특성을 활용해 인덱싱(Indexing, 문자열 위치 찾기)과 슬라이싱(Slicing, 문자열 잘라내어 추출)을 할 수 있다.
그리고 각 행의 데이터가 작은따옴표('')로 둘러싸여 있다는 것이다. 이는 각 행의 데이터가 문자열 데이터(string)로 이루어져 있음을 의미한다. 따라서 나중에 기온의 크기를 비교하려면 실수(float) 형태로 변환해야 한다.
전쟁이나 실수로 인해 데이터가 누락된 형태를 볼 수 있는데, 이처럼 데이터는 무결하지 않다.
이제 헤더(header)를 저장해야하는데, 헤더란 데이터 파일에서 여러가지 값들이 어떤 의미를 갖는지 표시한 행을 말한다. 보통 헤더는 데이터의 첫 번째 줄에 위치하며 두 번째 줄부터 나타나는 데이터의 속성을 설명한다. 헤더를 별도로 저장하려면 next()함수를 사용할 수 있다.
next 함수를 활용하면 헤더 데이터 행을 저장한다. 그리고 이 함수는 첫 번째 데이터 행을 읽어오면서 데이터 탐색위치를 다음 행으로 이동시킨다.
import csv
f = open('/content/drive/MyDrive/Python Study/모두의 데이터 분석 with 파이썬/seoul.csv', encoding='cp949')
data = csv.reader(f)
header = next(data) #헤더 변수에 next함수를 이용해 data의 첫 번째(헤더) 행 출력 저장
print(header)
f.close()
마지막으로 아래의 코드를 보면 헤더(header)의 다음행부터 읽어오는 것을 알 수 있다.
import csv
f = open('/content/drive/MyDrive/Python Study/모두의 데이터 분석 with 파이썬/seoul.csv', encoding='cp949')
data = csv.reader(f)
header = next(data)
for row in data:
print(row)
f.close()
파이썬 print 함수 사용법 정리 (파이썬 화면 출력)
파이썬(Python)으로 모니터 화면에 결과물을 출력하기 위해서는 print()함수를 사용해야 합니다. 파이썬 GUI 그래픽 프로그래밍이 아닐 경우 print() 출력은 기본이며 디버깅을 위한 오류 출력에도 자
withcoding.com
next(): 반복가능한 객체의 다음요소 반환