Top Banner
Creative Information Visualization 데이터 스토리텔링, 데이터 다루기 Sanghun Park Dongguk University
27

Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

May 09, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

Creative Information Visualization

데이터 스토리텔링, 데이터 다루기

Sanghun Park Dongguk University

Page 2: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

Contents 데이터 스토리텔링(storytelling) 숫자 그 이상 목표 디자인

데이터 다루기 데이터 수집방법 데이터 형식화

프레지(Prezi) 회원 가입 예제 소개

2013-08-09 Dongguk University 2

Page 3: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

Errors in Data 데이터 확인 입력 과정의 오류 의미 없는 데이터의 포함 편중된 샘플링

의심스러운 부분 발견 반드시 확인

2013-08-09 Dongguk University 3

Page 4: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

Design 상징 W. Cleveland and R. McGill, “Graphical perception and graphical

methods for analyzing data” 보는 사람이 한 눈에 이해할 수 있는 상징 레이블, 범례, 키워드

축과 레이블 레이블이나 설명 없는 축는 장식에 불과

유의 사항 파이차트 (조각의 비율 총합은 100% 이어야) 막대그래프 (길이만 의미 / 두께는 무의미) 버블차트 (면적으로 표현 / 지름이나 반지름이 아님) 트리맵 (면적으로 표현 / 길이, 폭, 두께는 무의미)

2013-08-09 Dongguk University 4

Page 5: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

출처의 표시 중요하지만 간과하기 쉬움 출처 없는 데이터는 신뢰성에 의심을 품게 만듦

받아들이는 사람을 위한 배려 슬라이드 프리젠테이션 (무조건 단순해야) 포스터 (간결한 설명) 사업보고서 (아름다움 보다는 명백하고 직설적인 요점 설명) 분석용 (자신만의 그래픽, 장식이나 주석 불필요) 일반대중용 (너무 복잡하지 않아야)

2013-08-09 Dongguk University 5

Page 6: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

Contents 데이터 스토리텔링(storytelling) 숫자 그 이상 목표 디자인

데이터 다루기 데이터 수집방법 데이터 형식화

프레지(Prezi) 회원 가입 예제 소개

2013-08-09 Dongguk University 6

Page 7: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

Data Collection 다른 사람으로부터 받기

데이터 찾기

데이터 긁어 모으기

2013-08-09 Dongguk University 7

Page 8: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

Asking Others 가장 쉽고 간단한 방법

다양한 형태의 오류 가능성 입력 실수 파일처리상의 문제

데이터 맥락 확인해야 출처는? 수집방법은? 무엇에 관한 자료?

2013-08-09 Dongguk University 8

Page 9: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

Searching Data 필요한 데이터를 직접 찾기 단점: 더 많은 작업 필요 장점: 신뢰성 보장, 입력하기 편한 형태로 변형 용이

검색엔진 http://google.com http://wolframalpha.com

직접 문의하기 이메일 언론 기사의 출처

2013-08-09 Dongguk University 9

Page 10: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

대학 CMU DASL (Data and Story Library)

• http://lib.stat.cmu.edu/DASL

Berkeley Data Lab • http://sunsite3.berkeley.edu/wikis/datalab

UCLA Statistical Data Sets • http://www.stat.ucla.edu/data

2013-08-09 Dongguk University 10

Page 11: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

데이터 애플리케이션 API (Application Programming Interface)로 데이터에 접근 허용

Freebase http://www.freebase.com • 사람, 장소, 사물에 대한 대부분의 데이터 구할 수 있는 커뮤니티

Infochimps http://infochimps.org • 유/무료 데이터 거래 마켓. 일부 데이터는 API로 접근 가능

Numbrary http://numbrary.com • (주로 정부의) 웹에 있는 데이터 목록 제공. 현재 offline 상태

AggData http://aggdata.com • 유/무료 데이터 마켓. 주로 지역 소매 데이터 목록 유지

Amazon Public Data Sets http://aws.amazon.com/publicdatasets • 대규모 과학 데이터 보유

Wikipedia http://wikipedia.org • 백과사전 시스템. 수 많은 소규모 데이터가 HTML 표 형식으로 정리

2013-08-09 Dongguk University 11

Page 12: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

주제별 사이트 지리학

• TIGER, OpenStreetMap, GeoCommons, Flickr Shapefiles

스포츠 • Basketball References, Baseball Databank, databaseFootball

국제기구들의 세계 데이터 • Global Health Facts, Undata, WHO, OECD Statistics, World Bank

정부와 정치 • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow

the Money, OpenSecrets

2013-08-09 Dongguk University 12

Page 13: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

Scraping, Crawling Data Scraping, Data Crawling 일반적으로 데이터는 복수의 HTML 웹 문서와 복수의 웹 사이트에

걸쳐 저장 짧은 스크립트를 이용해 다량의 HTML 페이지를 자동으로 방문해

서 데이터를 가져와 데이터베이스나 파일에 저장하는 기법

2013-08-09 Dongguk University 13

Page 14: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

관찰: 특정 하루의 날씨 정보를 찾기는 쉽다.

문제: 2009년 모든 날의 최고 기온(max temperature)을 찾으려면?

해결: 약간의 프로그래밍 이용 Python Script Language Beautiful Soup (A Python Library by Leonard Richardson)

2013-08-09 Dongguk University 14

Page 15: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

Tip 1: URL의 변화 관찰 2010년 10월 1일

• http://www.wunderground.com/history/airport/KBUF/2010/10/1/DailyHistory.html

2009년 1월 1일 • http://www.wunderground.com/his

tory/airport/KBUF/2009/1/1/DailyHistory.html

Tip 2: HTML 파일 내에서 최고 기온의 위치 확인 View – Source 메뉴 이용 Find (Ctrl-F) 기능 사용

2013-08-09 Dongguk University 15

Page 16: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

get-weather-data.py

#! -*- coding: utf8 -*-

import urllib2 from BeautifulSoup import BeautifulSoup

# 데이터를 저장할 파일을 생성하고 오픈 f = open(‘wunder-data.txt’, ‘w’)

# 매 달의 매 날짜를 순회하며 처리 for m in range(1, 13): for d in range(1, 32):

# 해당 달에 없는 날짜가 아닌 경우인지 확인 if (m == 2 and d > 28): break elif (m in [4, 6, 9, 11] and d > 30): break

#wunderground.com 페이지를 가져옴 timestamp = ‘2009’ + str(m) + str(d)

print ‘데이터를 가져올 날짜: ’ + timestamp url = http://www.wunderground.com/history/ airport/KBUF/2009/ + str(m) + “/” + str(d) + “/DailyHistory.html” page = urllib2.urlopen(url)

# 페이지에서 온도 데이터를 가져옴 soup = BeautifulSoup(page) # dayTemp = soup.body.nobr.b.string

dayTemp = soup.fetch(attrs = {“class”:“nobr”})[5].span.string

# 월 번호를 출력용 타임스탬프로 변환 if len(str(m)) < 2: mStamp = ‘0’ + str(m) else: mStamp = str(m)

# 날짜 번호를 출력용 타임스탬프로 변환 if len(str(d)) < 2: dStamp = ‘0’ + str(d) else: dStamp = str(d)

# 출력용 타임스탬프 생성 timestamp = ‘2009’ + mStamp + dStamp

# 파일에 날짜와 기온을 기록 f.write(timestamp + ‘,’ + dayTemp + ‘\n’)

# 데이터 가져오기 완료. 파일 닫기 f.close()

2013-08-09 Dongguk University 16

Page 17: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

Generalized Step 웹 사이트에서 데이터를 가져오는 일반적인 처리순서

① 패턴을 확인한다 • URL 주소 패턴 • 읽어온 페이지에서 필요한 데이터 기록 패턴 • 순회할 모든 페이지의 URL을 전부 알아야

② 필요한 내용을 반복해서 가져온다 • Python 스크립트 언어 • Beautiful Soup 라이브러리 • XML/HTML 해석 라이브러리

③ 가져온 데이터를 저장한다 • 쉼표(,)로 구분된 텍스트 파일 • 데이터베이스

2013-08-09 Dongguk University 17

Page 18: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

Data Formatting 데이터 형식화 목표 데이터를 컴퓨터가 읽을 수 있는 형태로 만드는 것 사용 목적과 시각화 도구에 따라 형식 결정

대표적인 일반 형식 구분 텍스트 (Delimited Text) JSON (JavaScript Object Notation) XML (eXtensible Markup Language)

2013-08-09 Dongguk University 18

Page 19: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

Common Formats 구분 텍스트 (Delimited Text)

CSV (comma separated values) TSV (tab separated values) 대부분의 스프레드시트에서 import / export 가능 여러 프로그램에서 데이터를 공유하고자 할 때 편리

JSON (JavaScript Object Notation) 주로 웹 API에서 사용 자바스크립트 기본 언어 규정에 기반한 형식 (http://json.org) 키-값 한 쌍(key-value entry)을 객체처럼 다룸

XML (eXtensible Markup Language) 웹과 API에서 일반적으로 쓰이는 형식 다양한 XML 종류와 규정 존재 태그로 싸여 있는 텍스트 문서

• 예: RSS (Really Simple Syndication) feed documents for blogs

2013-08-09 Dongguk University 19

Page 20: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

Formatting Tools 데이터 형식화 도구 Google Refine (http://code.google.com/p/google-refine)

• Freebase Gridworks에서 시작되어 구글에서 인수 • 데스크톱의 브라우저에서 실행. 무료 • 오픈 소스 프로젝트, 필요에 따라 도구 수정가능

Mr. Data Converter (http://www.shancarter.com/data_converter) • by Shan Carter (뉴욕타임즈 그래픽 에디터) • 간단한 무료 데이터 형식 전환 도구

Mr. People (http://people.ericson.net) • by Matthew Ericson (뉴욕타임즈 그래픽 국장) • 사람 이름을 추출하는 기능 강력

SpreadSheet • 도표와 데이터 관리, 분석을 위한 S/W 분류 • MS Office Excel, Open Office SpreadSheet, Apple iWork Numbers • 단순한 정렬, 개별 데이터 수정하는 정도의 수작업

2013-08-09 Dongguk University 20

Page 21: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

Formatting by Script Programs 한계: Big data 처리 경우

해결: 직접 스크립트 작성

Example: 데이터 형식 변환 CSV ⇒ XML, XML ⇒ CSV, CSV ⇒ JSON, CSV ⇒ CSV 파이썬과 적절한 관련 라이브러리 이용 다른 프로그램 언어(Ruby, Perl, PHP 등) 사용 가능

2013-08-09 Dongguk University 21

Page 22: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

Example: Converting Formats

2013-08-09 Dongguk University 22

XML format <weather_data> <observation> <data>20090101</data> <max_temperature>26</max_temperature> </observation> <observation> <data>20090102</data> <max_temperature>34</max_temperature> </observation> <observation> <data>20090103</data> <max_temperature>27</max_temperature> </observation> <observation> <data>20090104</data> <max_temperature>34</max_temperature> </observation> … </weather_data>

JSON format { “observations”:[ { “data”: “20090101”, “temperature”: 26 }, { “data”: “20090102”, “temperature”: 34 }, { “data”: “20090103”, “temperature”: 27 }, { “data”: “20090104”, “temperature”: 34 }, … ] }

CSV format 20090101,26 20090102,34 20090103,27 20090104,34 …

Page 23: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

import CSV

reader = csv.reader(open(‘wunder-data.txt’, ‘r’), delimiter=“,”) print ‘<weather_data>’ for row in reader: print ‘<observation>’ print ‘<date>’ + row[0] + ‘</data>’ print ‘<max_temperature>’ + row[1] + ‘</max_temperature>’ print ‘</observation>’ Print ‘</weather_data>’

CSV to XML

2013-08-09 Dongguk University 23

XML format <weather_data> <observation> <data>20090101</data> <max_temperature>26</max_temperature> </observation> <observation> <data>20090102</data> <max_temperature>34</max_temperature> </observation> <observation> <data>20090103</data> <max_temperature>27</max_temperature> </observation> <observation> <data>20090104</data> <max_temperature>34</max_temperature> </observation> … </weather_data>

CSV format 20090101,26 20090102,34 20090103,27 20090104,34 …

Page 24: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

from BeautifulSoup import BeautifulStoneSoup

f = open(‘wunder-data.xml, ‘r’) xml = f.read() soup = BeautifulStoneSoup(xml) observations = soup.fetch(‘observation’) for o in observations: print o.data.string + ‘,’ + o.max_temperature.string

XML to CSV

2013-08-09 Dongguk University 24

XML format <weather_data> <observation> <data>20090101</data> <max_temperature>26</max_temperature> </observation> <observation> <data>20090102</data> <max_temperature>34</max_temperature> </observation> <observation> <data>20090103</data> <max_temperature>27</max_temperature> </observation> <observation> <data>20090104</data> <max_temperature>34</max_temperature> </observation> … </weather_data>

CSV format 20090101,26 20090102,34 20090103,27 20090104,34 …

Page 25: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

CSV to JSON

2013-08-09 Dongguk University 25

JSON format { “observations”:[ { “data”: “20090101”, “temperature”: 26 }, { “data”: “20090102”, “temperature”: 34 }, { “data”: “20090103”, “temperature”: 27 }, { “data”: “20090104”, “temperature”: 34 }, … ] }

CSV format 20090101,26 20090102,34 20090103,27 20090104,34 …

import csv

reader = csv.reader(open(‘wunder-data.txt’, ‘r’), delimiter=“,”) print “{ observations: [” rows_so_far = 0 for row in reader: rows_so_far += 1 print ‘{’ print ‘“date”: ’ + ‘“’ + row[0] + ‘”, ’ print ‘“temperature”: ’ + row[1] if rows_so_far < 365: print “ },” else: print “ }” print “] }”

Page 26: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

CSV to CSV

2013-08-09 Dongguk University 26

CSV format 20090101,26,1 20090102,34,0 20090103,27,1 20090104,34,0 …

CSV format 20090101,26 20090102,34 20090103,27 20090104,34 …

import csv

reader = csv.reader(open(‘wunder-data.txt’, ‘r’), delimiter=“,”) for row in reader: if int(row[1]) <= 32: is_freezing = ‘1’ else: is_freezing = ‘0’ print row[0] + “,” + row[1] + “,” + is_freezing

Page 27: Sanghun Park Dongguk University · 2013-08-28 · • Census Bureau, Data.gov, Data.gov.uk, DataSF, NYC DataMine, Follow the Money, OpenSecrets 2013-08-09 Dongguk University 12. Scraping,

Contents 데이터 스토리텔링(storytelling) 숫자 그 이상 목표 디자인

데이터 다루기 데이터 수집방법 데이터 형식화

프레지(Prezi) 회원 가입 예제 소개

2013-08-09 Dongguk University 27