suanlab - 데이터처리프로그래밍suanlab.com/assets/lectures/dpp/10.pdf · 2019-06-11 ·...
TRANSCRIPT
데이터처리프로그래밍Data Processing Programming
10데이터수집
목차
1. 오픈데이터
2. CSV 파일
3. HTML 파일
4. XML 파일
5. JSON 파일
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 3
1. 오픈데이터
스프레드시트SpreadSheet
▪ 많은정부기관이마이크로소프트엑셀과같은스프레드시트로정보관리
▪ 스프레드시트는서로다른컬럼의의미를올바르게기술하기위해사용가능
▪ 스프레드시트안에다루기어려운매크로와공식이있기때문에, 사용자가읽기쉽도록해당스프레드시트와함께계산공식을제공하는것이바람직
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 5
http://opendatahandbook.org
CSVcomma-separated values
▪ CSV 파일은간결하고동일한구조로대용량데이터집합을전송하기위해적합하기때문에매우유용한형식
▪ CSV로표현된데이터는별도의문서가없을경우서로다른컬럼의중요성을추측하기어려움 (유용성이떨어질수있음)
▪ 콤마로구분된형식에따라개별필드에대한정확한문서화를만드는것이중요
▪ 파일구조가침해받지않아야됨
▪ CSV 파일에서하나의필드가삭제되면나머지데이터를해석하기위한방법이없기때문에, 파일수정없이는남은데이터의해석에문제가있음
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 6
http://opendatahandbook.org
HTMLHyperText Markup Language
▪ 웹페이지를위한지배적인마크업언어
▪ 제목, 단락, 목록등과같은본문을위한구조적의미를나타내는것뿐만아니라링크, 인용과그밖의항목으로구조적문서를만들수있는방법제공
▪ 이미지와객체를내장하고대화형양식을생성하는데사용
▪ HTML은웹페이지콘텐츠안의 < > 괄호에둘러싸인 "태그"로되어있는 HTML 요소형태로작성
▪ HTML은웹브라우저와같은 HTML 처리장치의행동에영향을주는자바스크립트와본문과그밖의항목의외관과배치를정의하는 CSS 같은스크립트를포함하거나불러올수있음
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 7
http://opendatahandbook.org
XMLExtensible Markup Language
▪ W3C에서개발
▪ 다른특수한목적을갖는마크업언어를만드는데사용하도록권장하는다목적마크업언어
▪ XML은 SGML의단순화된부분집합
▪ 다른많은종류의데이터를기술하는데사용할수있음
▪ XML은주로다른종류의시스템, 특히인터넷에연결된시스템끼리데이터를쉽게주고받을수있게하여 HTML의한계를극복할목적으로만들어짐
▪ 데이터상호교환을위해폭넓게사용되는포맷
▪ 데이터구조를유지하는데유리하며개발자는파일을읽는간섭없이데이터에문서의일부작성가능
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 8
https://ko.wikipedia.org/wiki/XML
JSONJavaScript Object Notation
▪ 속성-값쌍( attribute–value pairs and array data types (or any other serializable value)) 또는 "키-값쌍"으로이루어진데이터오브젝트를전달하기위해인간이읽을수있는텍스트를사용하는개방형표준포맷
▪ 비동기브라우저/서버통신 (AJAX)을위해, 넓게는 XML(AJAX가사용)을대체하는주요데이터포맷
▪ 특히, 인터넷에서자료를주고받을때그자료를표현하는방법으로알려져있음
▪ 자료의종류에큰제한은없으며, 특히컴퓨터프로그램의변수값을표현하는데적합
▪ 어떤프로그래밍언어로도읽을수있는단순한파일포맷
▪ XML 같은포맷에비해컴퓨터가처리하기쉬움
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 9
https://ko.wikipedia.org/wiki/JSON
RDFResource Description Framework
▪ W3C가권고하는포맷
▪ 다수의자료원으로부터데이터를쉽게조합할수있는형식으로데이터표현가능
▪ RDF 데이터는여러가지직렬화방법이있으며, XML과 JSON으로저장가능
▪ RDF는웹에있는 {term:열린데이터} 이니셔티브를서로연결하는데편리한방법을제공(식별자로 URL 사용을장려)
▪ RDF는폭넓게확산되어있지않지만, 영국과스페인정부의 Linked Data 프로젝트를포함한열린정부이니셔티브사이에서트렌드
▪ 웹의창시자인팀버너스리는최근 5개별스키마를제안하였는데, 이는오픈데이터이니셔티브들이추구하는목표로써연결된 RDF 데이터를포함
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 10
http://opendatahandbook.org
텍스트문서Text Documents
▪ Word, ODF, OOXML, PDF와같은포맷의표준적인문서로일정한종류의데이터를보여주는데활용
▪ 이포맷은일관적으로구조를유지하지않으며, 자동적으로데이터를입력하기어려움
▪ 데이터를재사용할수있도록문서기준의템플릿을사용한다면, 최소한정보를문서밖으로추출가능
▪ 가능한많은활자마크업을이용하여기계가콘텐트로부터표제를구분하기쉽게되어있는것은데이터의추가사용을이끌어낼수 있음
▪ 일반적으로다른포맷으로데이터가있다면, 워드프레세싱포맷에표현하는것을추천하지않음
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 11
http://opendatahandbook.org
Plain Text
▪ 일반텍스트문서 (.txt) 는컴퓨터가읽기매우쉬움
▪ 문서내에구조화된메타데이터를갖지않음
▪ 개발자는개별문서를처리할수있는파서를개발할필요가있음
▪ 운영체제사이에서일반텍스트문서를전환할때문제가생길수있음(MS 윈도우, Mac OSX, Unix 시스템은라인끝을처리하는서로다른방식을갖고있음)
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 12
http://opendatahandbook.org
스캔된이미지
▪ 아마도대부분의데이터에서가장적합한형식은문서의전체텍스트와문서의이미지를함께표시하는것
▪ TIFF과 JPEG-2000포맷은전자적으로만들어지지않은데이터를이미지로표현하는데적합
▪ 오래된교회기록과기록사진은자료가없는것보다나음
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 13
http://opendatahandbook.org
전용형식
▪ 전용시스템은데이터를저장하고추출할수있는독립적인데이터포맷을갖고있음
▪ 이와같은포맷으로데이터를노출시키는경우가종종있음
▪ 특히데이터를유사한시스템에서사용할것으로기대된다면, 전용포맷에서만찾을수있는정보는항상표시해야함
▪ 예를들어공급자의웹사이트에링크를제공하는것같이전용포맷이아닌방법으로표시하는것을추천
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 14
http://opendatahandbook.org
2. CSV 파일
공공데이터포털에서데이터다운로드https://www.data.go.kr/dataset/15021141/standard.do
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 16
전국관광지정보표준데이터보기(CSV)
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 17
CSV파일읽기
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 18
▪ csv 모듈사용
▪ csv.reader()를통해 csv 파일읽기
▪ 각 line 마다출력
csv.reader()
▪ delimiter: 데이터구분자
▪ quotechar: 데이터를묶는문자
▪ quoting: 데이터를묶는기준
▪ QUOTE_ALL: 모든데이터를자료형에상관없이묶음 (문자열처리)
▪ QUOTE_MINIMAL: 최소데이터만묶음
▪ QUOTE_NONNUMERIC: 숫자데이터가아닌경우만묶음
▪ QUOTE_NONE: 데이터를묶지않음
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 19
CSV파일의컬럼데이터
▪ 관광지명컬럼데이터만출력
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 20
관광지명오수의견관광지사선대관광지최참판댁화개장터삼성궁이병주문학관지리산역사관소요산관광지경천대관광지회상나루관광지김해가야테마파크김해낙동강레일파크가야랜드김해천문대롯데워터파크…
CSV파일의헤더정보
▪ 첫번째행은 csv의헤더정보
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 21
['관광지명', '관광지구분', '소재지도로명주소', '소재지지번주소', '위도', '경도', '면적', '공공편익시설정보', '숙박시설정보', '운동및오락시설정보', '휴양및문화시설정보', '접객시설정보', '지원시설정보', '지정일자', '수용인원수', '주차가능수', '관광지소개', '관리기관전화번호', '관리기관명', '데이터기준일자', '제공기관코드', '제공기관명', '']
CSV파일쓰기
▪ csv 모듈사용
▪ csv.writer()를통해 csv 파일쓰기
▪ writerow()를이용해한행씩쓰기
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 22
Lab.다른CSV파일가져오기
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 23
3. HTML 파일
HTML 구조
▪ <html> ~ </html>: HTML 문서의시작과끝
▪ <head> ~ </head>: HTML 문서메타데이터정의
▪ <title> ~ </title>: HTML 문서제목
▪ <body> ~ </body>: HTML 문서내용
▪ <h1> ~ </h1>: 제목heading
▪ <p> ~ </p>: 단락paragraph
▪ <a>: 문서링크
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 25
<!DOCTYPE html>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>Heading 1</h1>
<h2>Heading 2</h2>
<p>HTML Document</p>
</body>
</html>
BeautifulSoup모듈
▪ 파싱기능이있는다른라이브러리를쉽게사용할수있도록만든래퍼wrapper
▪ 전통적인파이썬 XML 파서(XML parser)에는 lxml과 html5lib 등이존재
▪ BeautifulSoup모듈은이를래핑하여데이터를쉽고빠르게처리
▪ 설치명령어▪ pip install beautifulsoup4
▪ pip install lxml
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 26
HTML 파싱
▪ BeautifulSoup모듈을이용하여 basic.html 파일을파싱
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 27
URL의HTML 파싱
▪ URL을이용해웹에접근하여 HTML 파일파싱
▪ <a> 태그에 href 속성값만출력
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 28
4. XML 파일
XML 구조
▪ 데이터의구조와의미를설명하는태그
▪ 어떤데이터의속성과값을표현
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 30
<?xml version=“1.0”?>
<학생>
<학번>201821512</학번>
<학과>데이터사이언스학과</학과>
<이름>이수안</이름>
<성별>남자</성별>
</학생>
XML 문서
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 31
<?xml version=“1.0”?>
<books>
<book>
<author>Suan</author>
<title>Data Programming</title>
<date>2019</date>
</book>
<publisher>
<name>KNU</name>
<tel>02-1234-1234</tel>
</publisher>
</books>
documents
XML books
book
author
Suan
title
Data
Programming
date
2019
publisher
name
KNU
tel
02-1234-1234
XML 파싱
▪ BeautifulSoup모듈을이용하여books.xml 파일을파싱
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 32
Lab.다른XML 파일가져오기
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 33
5. JSON 파일
JSON구조
▪ JSON은 XML보다데이터용량이적고코드로의전환이쉽다는측면에서 XML의대체재로가장많이활용
▪ JSON은파이썬의딕셔너리형과매우비슷하여, 키-값의쌍으로구성
▪ XML과비교할때 JSON의장점은일단코드가간결하고, 코드의전환이쉬우며, 코드의간결함때문에용량절약
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 35
{
"students":[
{
"id":"20181512",
"department":"data science",
"name":"Suan",
"sex":"Male"}
]
}
JSON 모듈
▪ 파이썬에서 JSON을사용하기위해서는json 모듈이용
▪ JSON 데이터포맷은데이터저장및읽기가딕셔너리형과완벽히상호호환
▪ 딕셔너리형에익숙한사용자가매우쉽게사용할수있다는장점
▪ 설치명령어▪ pip install json
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 36
JSON 읽기
▪ json 모듈을이용하여students.json 파일읽기
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 37
JSON 읽기
▪ json 모듈을이용하여 students.json 파일쓰기
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 38
Lab.다른 JSON 파일가져오기
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 39
• 데이터처리프로그래밍(Data Processing Programming) - 10 데이터수집 40