웹에서 가져오기
html 웹 페이지에서 표 속성 가져오기
•
read_html() : html 웹 페이지에 있는 <table> 태그에서 표 형식의 데이터를 모두 찾아서 데이터프레임으로 변환한다.
표 데이터들은 별도의 데이터프레임으로 변환되기 때문에 결과는 여러 개의 데이터프레임을 원소로 갖는 리스트가 반환된다.
→ pd.read_html(”웹 주소” 또는 “html 파일 경로”)
웹 스크래핑
BeautifulSoup 등 웹 스크래핑 도구로 수집한 데이터를 판다스 데이터프레임으로 정리한다.
먼저, 스크래핑한 내용을 파이썬의 리스트, 딕셔너리 등으로 정리한 뒤 → pd.DataFrame() 함수에 전달하여 데이터프레임으로 변환한다.
# 위키피디아의 미국 ETF 리스트 데이터 -> 데이터프레임으로 변환하기
from bs4 import BeautifulSoup
import requests
import re
import pandas as pd
url = ''
resp = requests.get(url)
soup = BeautifulSoup(resp.text,'lxml') # 'lxml'은 파서 지정
rows = soup.select('div > ul > li')
etfs = {}
for row in rows:
try:
etf_name = re.findall('^(.*) \(NYSE', row.text)
etf_market = re.findall('\((.*)\|', row.text)
etf_ticker = re.findall('NYSE Arca\|(.*)\)', row.text)
if (len(etf_ticker) > 0) & (len(etf_market) > 0) & (len(etf_name) > 0):
etfs[etf_ticker[0]] = [etf_market[0], etf_name[0]]
except AttributeError as err:
pass
# etfs 딕셔너리 출력
print(etfs)
print('\n')
# etfs 딕셔너리를 데이터프레임으로 변환
df = pd.DataFrame(etfs)
print(df)
Python
복사
데이터베이스에서 판다스로 데이터 가져오기
판다스 read_sql() 함수를 사용하면 sql 쿼리를 가지고 데이터베이스로부터 데이터를 불러올 수 있다. 이때 읽어온 데이터는 데이터프레임 포맷으로 저장된다.