웹 스크래핑을 통해 데이터를 수집하는 것은 정보를 자동으로 추출하고 이를 분석할 때 매우 유용하지만, 대부분의 경우 웹에서 추출한 데이터는 바로 사용하기에 적합한 형태가 아닙니다. 데이터는 종종 불필요한 태그, 형식 불일치, 누락된 값 등 다양한 문제를 내포하고 있습니다. 이러한 문제를 해결하고, 분석에 적합한 형태로 데이터를 변환하는 과정을 '데이터 정제(Data Cleaning)'라고 합니다. 오늘은 파이썬을 사용하여 웹에서 추출한 데이터를 정제하고 저장하는 방법을 살펴보겠습니다.
필요한 도구
데이터 정제 과정을 시작하기 전에, 필요한 라이브러리를 설치해야 합니다. BeautifulSoup
과 pandas
는 웹 스크래핑과 데이터 정제에 가장 많이 사용되는 라이브러리입니다.
pip install beautifulsoup4 pandas
데이터 추출하기
먼저, 웹 스크래핑을 통해 데이터를 추출해야 합니다. 여기서는 예제로, Python.org의 최근 뉴스 헤드라인을 추출해 보겠습니다.
import requests
from bs4 import BeautifulSoup
# 웹 페이지 불러오기
url = 'https://www.python.org/blogs/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 데이터 추출하기
articles = soup.find_all('li', class_='menu-item')
data = []
for article in articles:
title = article.find('a').text.strip()
link = article.find('a')['href']
data.append({'title': title, 'link': link})
데이터 정제하기
추출한 데이터에는 HTML 태그, 공백 등 불필요한 정보가 포함되어 있을 수 있습니다. pandas
를 사용하여 이 데이터를 정제해 보겠습니다.
import pandas as pd
# 데이터프레임으로 변환
df = pd.DataFrame(data)
# 불필요한 데이터 제거 (예시: 특정 글자 수 미만의 제목 제거)
df = df[df['title'].apply(lambda x: len(x) > 10)]
# 중복된 데이터 제거
df.drop_duplicates(subset=['title'], inplace=True)
# 인덱스 재설정
df.reset_index(drop=True, inplace=True)
데이터 저장하기
정제한 데이터를 CSV 파일로 저장해보겠습니다. 이렇게 하면 나중에 분석하거나 다른 애플리케이션에서 사용할 수 있습니다.
df.to_csv('python_org_news.csv', index=False)
이제 python_org_news.csv
파일을 열어서 정제된 데이터를 확인할 수 있습니다. 데이터 정제는 데이터 분석 과정에서 매우 중요한 단계입니다. 웹에서 추출한 데이터는 종종 불완전하고, 불필요한 정보를 포함하고 있기 때문에, 이를 효과적으로 정제하는 것은 분석의 정확도를 높이는 데 결정적인 역할을 합니다.
이 포스팅을 통해 웹에서 데이터를 추출, 정제, 저장하는 기본적인 프로세스를 이해할 수 있었기를 바랍니다. 실제 프로젝트에서는 데이터의 특성과 필요에 따라 정제 과정을 더 세분화하고 복잡한 처리가 필요할 수 있습니다. Python과 그 생태계가 제공하는 풍부한 라이브러리와 도구를 활용하여, 다양한 데이터 정제 작업을 효율적으로 수행해 보세요.