본문 바로가기
PROGRAMMING/Data Analysis

[데이터 분석] (2) 데이터 수집하기

by Hey Nary 2021. 11. 19.
728x90
반응형

안녕하세요! 

 

지난 포스팅에서, 데이터 분석이 무엇인지, 어떤 절차를 거치는지 알아 보았습니다.

[데이터 분석] (1) 데이터 분석이란?

 

이번 글에서부터, 실질적인 데이터 분석 절차를 하나씩 뜯어볼게요!

첫 번째로, 어떻게 데이터를 수집하는지 방법을 알아보겠습니다.

 

말머리 [데이터 분석] 으로 검색해주세요!

 

<요약글>

[데이터 분석] (sumUP1) : 빅데이터 분석/데이터 수집/데이터 전처리

[데이터 분석] (sumUP2) : 지도학습/비지도학습/데이터시각화

[데이터 분석] (응용)미디어 데이터분석 - 기초 이론


PART 2. 데이터 수집하기

01. 데이터를 어떻게 수집할까?

02. 정형데이터 수집

03. 비정형 데이터 수집


 

01. 데이터를 어떻게 수집할까?

[1] 데이터 수집 방법

다양한 데이터 유형과 다루는 주체에 따라, 여러 수집 방법이 존재합니다.

아래에 간략히 정리해 볼게요.

  • Download : txt, csv
  • RSS : Feed. TCP/IP 프로토콜을 이용하는 인터넷 서버로부터 파일을 송수신.
  • Open API : Application. Web 운영 주체가 공개하는 API.
  • Crawling : 인터넷 긁어오기. 외부 데이터에 대한 HTTP 수집 (SNS, News, Website..)
  • RSS (Rich Site Summary) : 뉴스 구독 등. Web 기반 최신 데이터 공유를 위한 XML 기반 콘텐츠 공유 (배급 프로토콜).
  • Streaming : 음성/오디오/비디오 실시간 수집
  • Aggregator : Log 데이터 수집 (Chukwa, Flume, Scribe 등). RDB 관계형 DB로부터 NoSQL, Hadoop 등에 저장 처리 (Sqoop, Direct JDBC/ODBC).

데이터 유형 별로 어떤 방법을 주로 사용하는지 개념적으로 이해하고 있으면,

이후 데이터 분석 기획 시 유용하겠죠?

 

[2] 데이터 유형

세상에는 정말 많은 데이터들이 있습니다.

분석을 하려면, 이름을 알아줘야겠죠? 어떤 데이터들이 있는지 확인해 봅시다!

 

데이터의 유형 by 형태
데이터 유형 데이터 종류 수집
정형 데이터 RDB, 스프레드 시트 ETL, FTP, Open API
반정형 데이터 HTML, XML, JSON, 웹문서, 웹로그, 센서 데이터 Crawling, RSS, Open API, FTP
비정형 데이터 소셜 데이터, 문서, 이미지, 오디오, 비디오, IoT Crawling, RSS, Open API, FTP, Streamig

 

 

데이터의 유형 by 내용
  • 양적 자료 (Qualititative Data) = 수치형 자료 (Numerical Data)
    • 연속형 자료 (Continuous Data)
    • 이산형 자료 (Discrete Data)
  • 질적 자료 (Qualitative Data) = 범주형 자료 (Categorical Data)
    • 명목형 자료 (Nominal Data)
    • 순서형 자료 (Ordinal Data)

 

단어로 보니 조금 어렵나요?

다음 단계에서 하나씩 알아보겠습니다.

 


02. 정형데이터 수집

[1] RDB : 관계형 데이터 베이스

  • 2개 이상의 DB 또는 table 을 연결하기 위해 고유식별자를 사용하는 데이터베이스 (DB).
  • 각 항목과 속성이 다른 항목 및 속성과 연결될 수 있도록 구성된 자료 구조.
  • 자료가 다중연결되어, 각 다른 필드와 연결되는 강력하고 유연한 DB.
  • Query (관계형 질의) 로 하나 이상의 필드에 특정 조건을 주어 그것을 만족하는 레코드를 찾게 됨.
  • 관계형 데이터를 저장, 수정, 관리
  • SQP 문장을 통해 DB의 생성, 수정, 검색 등 서비스를 제공
  • orade, mssql, mySQL, sybase, MPP DB

 

[2] CSV : 스프레드시트

  • .csv 의 확장자
  • 구분자 (보통은 쉼표 ",") 로 데이터 내용을 나눈 것으로 엑셀과 같은 형태
  • 외부 파일로도 존재할 수 있고 프로그램한 데이터를 하나의 파일로 저장할 수도 있음
  • 한 개 이상의 레코드
  • 레코드는 한 개 이상의 필드를 보유
  • 레코드는 줄바꿈으로 구분

 

파이썬에서는 이러한 정형 데이터를 다루기 위한 여러 라이브러리를 제공하고 있습니다.

Sqlalchemy 는 파이썬용 ORM (Object-Relational Mapping) 구현 라이브러리입니다.

ORM 이란, 말 그대로 Object 객체와 Relation 관계를 연결하는 것으로,

다시 말해 데이터베이스의 데이터와 필드를 연결하는 것입니다.

공식 사이트에서 추가적인 내용을 확인해 보세요!

https://www.sqlalchemy.org/

 

SQLAlchemy - The Database Toolkit for Python

The Python SQL Toolkit and Object Relational Mapper SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that gives application developers the full power and flexibility of SQL. It provides a full suite of well known enterprise-level persisten

www.sqlalchemy.org

Pandas 는 데이터 처리, 분석을 위한 라이브러리 (Python Data Analysis Library) 입니다.

이름에서 알 수 있듯, 데이터 분석을 할 때 Pandas 를 빼고 말할 수 없겠네요!

R 프로그램이 통계분석만을 위해 고안되었다면, Pandas 는 데이터프레임을 자유롭게 가공하기 위한 것입니다.

R의 dataframe 의 데이터 타입을 참고해, 파이썬이라는 프로그래밍 언어로 구현한 것이 Pandas 인 것이죠!

공식 사이트에서 추가적인 내용을 확인해 보세요!

https://pandas.pydata.org/

 

pandas - Python Data Analysis Library

pandas pandas is a fast, powerful, flexible and easy to use open source data analysis and manipulation tool, built on top of the Python programming language. Install pandas now!

pandas.pydata.org


03. 비정형데이터 수집

[1] NoSQL (Not-Only SQL)

  • 비관계형 데이터 저장소
  • 기존 RDB와 달리, Table Schema 가 고정되지 않음
  • Table 간 Join 이 되지 않음
  • 수평적 확장 (Horizontal Scalability) 가 용이
  • Key-value, Document Key-value, Column 기반의 NoSQL 이 주로 활용됨
  • MongoDB, Cassandra, HBase, Redis

 

[2] TEXT 파일

텍스트 또한 형태가 일정하지 않으므로 보통 비정형 데이터로 분류합니다.

만약, 특정한 규칙을 갖게 되면 정형 데이터로 분류될 수도 있겠죠?

TEXT 파일의 종류를 자세히 정리하면 아래와 같아요.

텍스트 파일 텍스트 데이터를 포함
바이너리 파일 텍스트가 아닌 데이터를 포함
플레인 텍스트 파일 Sequence, EOF 등 특정 조건에 부합하는 파일
비정형 파일 소설, 이메일, SNS 등 라인 외에 별다른 구조적 속성이 없는 파일
반정형 파일 html, xml, yaml, json 등 구조적 형태 내에서 자유롭게 쓰인 파일
정형 파일 엑셀, RDB 등의 표 형식이 대표적. CSV 등. 텍스트 마이닝 시 콤마 (,) 를 구분하기 위해 탭 (tab) 을 구분자로 사용 

정형 파일은 비교적 수집이 쉽지만,

반정형/비정형 파일은 일일히 데이터를 모으기 힘듭니다.

 

텍스트 파일 수집의 대표적인 방법 3가지는 다음과 같습니다.

  • XML
  • API
  • Crawling
API (Application Programming Interface)

컴퓨터와 프로그램 사이의 연결 (인터페이스) 입니다.

사용자 인터페이스는 컴퓨터와 인간을 연결한다면 API 는 컴퓨터와 소프트웨어 (프로그램) 을 연결합니다.

응용 프로그램에서 사용할 수 있도록 운영체제, 프로그래밍 언어의 기능을 제어할 수 있는 인터페이스입니다.

문자 제어, 화상처리, 창 제어, 파일 제어 등의 인터페이스를 제공합니다.

 

대표적인 웹사이트를 소개해 드릴게요!

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

 

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음

developers.naver.com

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

Google Developers

Everything you need to build better apps.

developers.google.com

 

Сurrent weather and forecast - OpenWeatherMap

Access current weather data for any location on Earth including over 200,000 cities! The data is frequently updated based on the global and local weather models, satellites, radars and a vast network of weather stations. how to obtain APIs (subscriptions w

openweathermap.org

 

Crawling = Web Scrapping

웹사이트에서 원하는 데이터를 추출하는 것입니다.

다양한 정보가 사이트 구성에 따라 흩어져 있는데, 이를 DB화 하려면 꼭 필요한 작업이죠.

크롤링에서는 파이썬이 선두를 하고 있습니다.

파이썬에선 웹크롤링을 하려면 Beautifulsoup 모듈이 꼭 필요합니다!

웹 문서의 구조를 찾아내고, html 파일을 가져오고, 웹에서 소스를 가져오죠.

이에 대해서는 다음 포스팅에서 예제를 풀며 더 알아볼게요.

크롤링에도 두 가지 종류가 있습니다.

  • 정적 크롤링 : 메모리에 로딩하지 않음
  • 동적 크롤링 : 메모리에 로딩, 파이썬의 경우 Selenium 모듈을 많이 사용 (웹앱을 테스트할 때 이용하는 프레임워크)

쉽게 말해, 정적 크롤링은 url 에 있는 것만 가져올 수 있습니다.

동적 크롤링은 반면, 검색을 하거나 또 다른 링크를 누르는 등의 행위까지 할 수 있습니다.

 


여기까지,

데이터 수집 방법에 대해 알아보았습니다!

다음 포스팅에서는, 데이터 수집 예제를 확인해보겠습니다.

728x90
반응형

댓글