시간과 공간

[패캠 부트캠프8기] Python - EDA를 위한 전처리, 웹크롤링 본문

데이터 분석

[패캠 부트캠프8기] Python - EDA를 위한 전처리, 웹크롤링

eh0000 2023. 3. 30. 22:35
※ 본 내용은 [패스트캠퍼스 : 데이터 분석 부트캠프 8기 - Python] 강의 내용을 기반으로 작성하였습니다. 내용 복사 및 인용하여 게시글 작성 시 출처 작성 부탁드립니다.

Python

EDA를 위한 전처리

EDA 란?

  • Exploratory Data Analysis (탐색적 데이터 분석)
  • 기존의 통계학이 정보의 추출에서 가설 검정 등에 치우쳐 자료가 가지고 있는 본연의 의미를 찾는데 어려움이 있어 이를 보완하고자 주어진 자료만 가지고도 충분한 정보를 찾을 수 있도록 하는 것이라고 한다.
  • 분석의 목적과 변수가 무엇인지, 데이터를 전체적으로 문제가 없는지, '이상치' 나 '결측치' 등을 확인하는 과정이라고 할 수 있다.

EDA를 위한 전처리 (Data Pre-processing)

  • 실제 데이터 분석을 하게 되면, 데이터가 분석을 위해 깔끔히 정리된 상태가 아닐수있다. 잘못된 데이터가 들어갈 수도 있고, 데이터가 비어있는 경우도 있다. 그래서 이를 분석에 용이하게 다듬는 데이터 전처리 과정이 필요하다.
  • 데이터 클렌징(cleansing), 축소(reduction) 등이 진행된다.

데이터 전처리 시 살펴보는 사항들

  • 결측치
  • 이상치 (outlier)
  • 변수의 수 : 너무 많은 경우 차원 축소(PCA)
  • 편향된 분포의 변수 : log, sqrt 등 으로 분포 변환
  • 측정 단위(scale)이 차이가 클 경우 : 스케일링

 

웹크롤링 (Web Crawling)

  • 스크레이핑(Scraping)이라고도 하며, 웹페이지를 그대로 가져와서 인터넷상의 데이터를 추출하는 것이다.
  • 상업적으로 사용하는 경우 법적인 이슈에 휘말릴 수 있으므로 사전에 신중히 알아보고 진행해야 한다.
# 예제 : 특정 종목 일별 시세 크롤링
import requests
import pandas as pd
from bs4 import BeautifulSoup

url = 'https://finance.naver.com/item/sise_day.nhn?code=005930'

# 첫번째 페이지 파싱, 전체 페이지 수 카운드
soup = BeautifulSoup(req.text, 'html.parser')
last_page = int(soup.select_one('td.pgRR').a['href'].split('=')[-1])

# 모든 페이지 df에 담기 - 5분정도 걸림
df = None
for page in range(1, last_page + 1):
    req = requests.get(f'{url}&page={page}', headers = headers)
    df = pd.concat([df, pd.read_html(req.text, encoding = 'euc-kr')[0]], ignore_index = True)
Comments