본문 바로가기
일상생활

[서평]송석리, 이현아(2019) 모두의 데이터 분석 with 파이썬

by Oh 선생 2019. 12. 27.

#0. 

최근의 관심사 중 하나를 꼽으라면 역시 파이썬이다. 블로그를 보면 알 수 있듯, 난 이제 겨우 기본적인 제어를 넘어서 이런저런 간단한 프로젝트를 돌려보며 필요한 기능을 조금씩 익히는 수준이다. 이렇게 공부를 하다보면 자연스럽게 어딘가 써먹고 싶게 마련인데... 수학선생이 프로그램을 써먹을만한 데가 자료분석말고 또 뭐가 있겠나. 자연스럽게 데이터 분석 쪽으로 관심을 갖게 되었다. 

그런데 문제는 데이터분석이 너무 거창하다는 데 있다. 데이터분석을 제대로 하려면 천상 판다스를 배워야 할 것 같은데, 조금 낯설고 어렵다. 뭔가 초보자와 고급진 자료분석 수준을 연결하는 정도의 책이 필요했는데, 예전에 선배가 추천해준 책이 생각나 책을 보고 연습을 하게 됐다. 

목차는 이렇다. 

Part 1. 기온 공공데이터
Unit 1 기온 데이터 분석 시작하기
Unit 2 서울의 기온 데이터 분석하기
Unit 3 서울이 가장 더웠던 날은 언제였을까

Part 2. 데이터 시각화 기초
Unit 4 기본 그래프 그리기
Unit 5 내 생일의 기온 변화를 그래프로 그리기
Unit 6 기온 데이터를 다양하게 시각화하기

Part 3. 인구 공공데이터

Unit 7 우리 동네 인구 구조 시각화하기
Unit 8 인구 구조를 다양한 형태로 시각화하기
Unit 9 우리 동네 인구 구조를 파이 차트로 나타내기
Unit 10 우리 동네 인구 구조를 산점도로 나타내기

Part 4. 대중교통 데이터 프로젝트
Unit 11 대중교통 데이터 시각화하기
Unit 12 지하철 시간대별 데이터 시각화하기

Part 5. 파이썬 데이터 분석 라이브러리를 활용한 프로젝트
Unit 13 숫자 데이터를 쉽게 다루게 돕는 numpy 라이브러리
Unit 14 numpy를 활용한 나만의 프로젝트 만들기
Unit 15 테이블 형태의 데이터를 쉽게 다루도록 도와주는 pandas 라이브러리

부록: 파이썬 병아리반

 

#1.

책에는 공공 데이터, 대중교통 데이터 등을 찾아 어떻게 그럴듯한 프로젝트로 연결시켜갈지가 제법 자세하게 담겨있다. 특히 '주어진 데이터에 질문을 던지고 이를 해결하도록 한다'는 방식의 유도가 참 좋았다. 역시 현장에서 애들 대상으로 지도해본 사람이 썼다는 티가 난다. 결국 데이터를 분석할 '동기'가 중요한건데, 그런 동기는 데이터에 무엇을 물어볼 것인가에 의해 결정되는 것 아닌가. 코드가 크게 어렵지 않다는 점도 마음에 들었다. 

책의 전반적인 내용은 csv파일을 다운로드 받아 - 적당히 처리하여 - matplotlib으로 그래프를 그린다로 이루어져 있다.  그러다보니 코드 각각에서 뭘 많이 배울 수 있는 것 같진 않다. 특히 csv와 matplotlib를 어느 정도 다룰 줄 아는 사람이라면 더 그렇다. 그런데 코딩할 때 중요한 건 그 사람이 어떤 구문을 사용할 줄 아냐가 아니라, 그런 구문들을 긁어모아 얼마나 유의미한 결과를 만들어내냐 아닌가. 그런 점에서 원래 알고 있던 구문들을 어떻게 모아 실질적인 자료분석 프로젝트를 돌릴 수 있는지 인사이트를 제공한다는 장점이 있는 책이다. 

#2. 

요건 내가 본문을 보고 만든 교하동 지역의 남녀 성별 인구분포와 인구구조다.

요정도까지 해보니까 이걸로 애들 프로젝트를 돌릴 수도 있겠다는 생각이 들더라. 물론 수학과 내에서만 하는건 조금 어렵고, 사회과나 다른 과와 통합해서... 

 

#3.

책을 읽고 필이 꽂혀서, 지도와 데이터를 연결하여 시각화하는 방법이 있으면 좋겠다는 생각이 들었다. 그래서 찾아보니 folium라이브러리가 있더라. 인터넷을 찾아 간단히 사용법을 익히고, 파주시 공공데이터 중 cctv에 대한 것을 받아 다음고 같은 프로그램을 만들었다. 

import csv
import folium

f=open('cctv_paju.csv')
data=csv.reader(f)
next(data)

map=folium.Map(location=[37.741880,126.736557], zoom_start=13)

for row in data:
    y=float(row[10])
    x=float(row[11])
    folium.Marker([y,x],popup=row[2]).add_to(map)

map.save('testmap.html')

cctv_paju.csv파일에는 파주시에 설치된 cctv의 위도, 경도가 포함되어 있다. 그걸 읽어서 지도 위에 표시하는 프로그램이다. 결과는 다음과 같다. 

아무래도 사람이 많은 교하, 운정, 금촌 지역에 CCTV가 몰려있다. 관련해서 재미진 프로젝트들을 돌릴 것 같다.

... 근데 왜 방과후는 안열리는 거냐... 

 

* 이게 서평인지 아니면 컴퓨터 카테고리로 가야할 글인지 헷갈리긴 하는데 일단 시작은 책에서 했으니 서평에 남기기로. 

댓글0