안녕하세요!
지난 포스팅에서, 데이터 분석이 무엇인지, 어떤 절차를 거치는지 알아 보았습니다.
이번 글에서부터, 실질적인 데이터 분석 절차를 하나씩 뜯어볼게요!
첫 번째로, 어떻게 데이터를 수집하는지 방법을 알아보겠습니다.
말머리 [데이터 분석] 으로 검색해주세요!
<요약글>
[데이터 분석] (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 관계를 연결하는 것으로,
다시 말해 데이터베이스의 데이터와 필드를 연결하는 것입니다.
공식 사이트에서 추가적인 내용을 확인해 보세요!
Pandas 는 데이터 처리, 분석을 위한 라이브러리 (Python Data Analysis Library) 입니다.
이름에서 알 수 있듯, 데이터 분석을 할 때 Pandas 를 빼고 말할 수 없겠네요!
R 프로그램이 통계분석만을 위해 고안되었다면, Pandas 는 데이터프레임을 자유롭게 가공하기 위한 것입니다.
R의 dataframe 의 데이터 타입을 참고해, 파이썬이라는 프로그래밍 언어로 구현한 것이 Pandas 인 것이죠!
공식 사이트에서 추가적인 내용을 확인해 보세요!
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 는 컴퓨터와 소프트웨어 (프로그램) 을 연결합니다.
응용 프로그램에서 사용할 수 있도록 운영체제, 프로그래밍 언어의 기능을 제어할 수 있는 인터페이스입니다.
문자 제어, 화상처리, 창 제어, 파일 제어 등의 인터페이스를 제공합니다.
대표적인 웹사이트를 소개해 드릴게요!
Crawling = Web Scrapping
웹사이트에서 원하는 데이터를 추출하는 것입니다.
다양한 정보가 사이트 구성에 따라 흩어져 있는데, 이를 DB화 하려면 꼭 필요한 작업이죠.
크롤링에서는 파이썬이 선두를 하고 있습니다.
파이썬에선 웹크롤링을 하려면 Beautifulsoup 모듈이 꼭 필요합니다!
웹 문서의 구조를 찾아내고, html 파일을 가져오고, 웹에서 소스를 가져오죠.
이에 대해서는 다음 포스팅에서 예제를 풀며 더 알아볼게요.
크롤링에도 두 가지 종류가 있습니다.
- 정적 크롤링 : 메모리에 로딩하지 않음
- 동적 크롤링 : 메모리에 로딩, 파이썬의 경우 Selenium 모듈을 많이 사용 (웹앱을 테스트할 때 이용하는 프레임워크)
쉽게 말해, 정적 크롤링은 url 에 있는 것만 가져올 수 있습니다.
동적 크롤링은 반면, 검색을 하거나 또 다른 링크를 누르는 등의 행위까지 할 수 있습니다.
여기까지,
데이터 수집 방법에 대해 알아보았습니다!
다음 포스팅에서는, 데이터 수집 예제를 확인해보겠습니다.
'PROGRAMMING > Data Analysis' 카테고리의 다른 글
[데이터 분석] (3-3) 데이터 수집 예제 : 네이버 동적 크롤링 (0) | 2021.11.19 |
---|---|
[데이터 분석] (1) 데이터 분석이란? (0) | 2021.11.19 |
[데이터 분석] (응용)미디어 데이터분석 - 기초 이론 (0) | 2021.10.16 |
[데이터 분석] (sumUP2) : 지도학습/비지도학습/데이터시각화 (0) | 2021.10.16 |
[데이터 분석] (sumUP1) : 빅데이터 분석/데이터 수집/데이터 전처리 (2) | 2021.10.16 |
댓글