Python Pandas

Pandas로 웹 스크래핑한 데이터 분석

PyExplorer 2025. 2. 25. 09:05
728x90

Pandas로 웹 스크래핑한 데이터 분석

1. 개요

웹 스크래핑(Web Scraping)은 웹사이트에서 데이터를 추출하는 기술로, Python의 requestsBeautifulSoup을 활용하면 쉽게 수행할 수 있습니다. 이번 포스팅에서는 웹에서 데이터를 가져와 Pandas로 분석하는 방법을 설명합니다.

2. 필요한 라이브러리 설치

웹 스크래핑을 위해 다음 라이브러리를 설치해야 합니다.

pip install requests beautifulsoup4 pandas

이제 각 라이브러리의 역할을 살펴보겠습니다.

  • requests: 웹 페이지의 HTML을 가져오는 라이브러리
  • BeautifulSoup: HTML을 파싱하여 원하는 데이터를 추출하는 라이브러리
  • pandas: 데이터를 구조화하고 분석하는 라이브러리

3. 웹 페이지에서 데이터 가져오기

예제로 네이버 금융(Naver Finance)에서 환율 데이터를 가져와 분석해보겠습니다.

3.1 HTML 가져오기

import requests
from bs4 import BeautifulSoup

# 타겟 URL 설정
url = "https://finance.naver.com/marketindex/"

# GET 요청을 보내 웹페이지 가져오기
response = requests.get(url)

# 응답 확인
if response.status_code == 200:
    html = response.text
else:
    raise Exception("웹페이지를 불러오는데 실패했습니다.")

위 코드에서는 requests.get()을 사용하여 웹페이지의 HTML을 가져옵니다.

3.2 원하는 데이터 추출하기

네이버 금융에서 제공하는 환율 정보를 가져오기 위해 BeautifulSoup을 사용합니다.

soup = BeautifulSoup(html, 'html.parser')

# 환율 데이터 찾기
data = []
currencies = soup.select(".market1 .data_lst li")

for currency in currencies:
    name = currency.select_one(".h_lst").get_text(strip=True)
    value = currency.select_one(".value").get_text(strip=True)
    data.append([name, value])

이제 data 리스트에는 환율 정보가 저장됩니다.

4. Pandas를 활용한 데이터 분석

웹에서 추출한 데이터를 PandasDataFrame으로 변환하여 분석해 보겠습니다.

import pandas as pd

# DataFrame 생성
df = pd.DataFrame(data, columns=["통화", "환율"])

# 데이터 타입 변환
df["환율"] = df["환율"].str.replace(',', '').astype(float)

위 코드에서는 DataFrame을 생성하고, 숫자로 저장된 환율 값을 float 타입으로 변환합니다.

4.1 데이터 요약

print(df.info())
print(df.describe())

info()describe()를 사용하여 데이터 구조와 통계 정보를 확인할 수 있습니다.

4.2 데이터 정렬

환율 값을 기준으로 데이터를 정렬해 보겠습니다.

sorted_df = df.sort_values(by="환율", ascending=False)
print(sorted_df)

이제 높은 환율을 가진 통화부터 정렬된 결과를 볼 수 있습니다.

5. 시각화하기

matplotlibseaborn을 사용하여 데이터를 시각화해 보겠습니다.

pip install matplotlib seaborn
import matplotlib.pyplot as plt
import seaborn as sns

plt.figure(figsize=(10, 6))
sns.barplot(x="환율", y="통화", data=df, palette="coolwarm")
plt.xlabel("환율 (KRW)")
plt.ylabel("통화")
plt.title("네이버 금융 환율 정보")
plt.show()

이제 통화별 환율을 막대 그래프로 확인할 수 있습니다.

6. 결론

이번 포스팅에서는 requestsBeautifulSoup을 활용하여 웹에서 환율 데이터를 가져오고, Pandas를 이용해 분석 및 시각화하는 과정을 살펴보았습니다. 이를 활용하면 다양한 웹 데이터를 자동으로 수집하고 분석할 수 있습니다.

다음 단계로, 수집된 데이터를 정기적으로 업데이트하는 자동화 시스템을 구축해보는 것도 좋은 연습이 될 것입니다.

728x90