requestsとpandasを組み合わせてWebデータをデータフレームに取り込もう!

はじめに

Web上には多くのデータが存在し、それを分析することは非常に重要です。requestsとpandasを組み合わせることで、Webデータを簡単かつ効率的にデータフレームに取り込むことができます。本記事では、requestsとpandasを使ったWebデータの取り込み方法を紹介します。

requestsとpandasの基本的な連携方法

requestsはPythonのライブラリの一つで、HTTPリクエストを簡単に送信することができます。pandasはPythonのライブラリの一つで、データの読み書きやデータ加工を簡単に行うことができます。requestsとpandasを組み合わせることで、Webデータをデータフレームに簡単に取り込むことができます。

まずは、requestsとpandasの基本的な連携方法を紹介します。

import io
import pandas as pd
import requests
url = "https://stockdatacenter.com/stockdata/companylist.csv"

response = requests.get(url)
df = pd.read_csv(io.BytesIO(response.content))

print(df.head())

上記のコードでは、requestsを使ってWebからデータを取得し、pandasを使ってデータをデータフレームに変換しています。

まず、requestsでWeb上のCSVファイルを取得しています。requests.get()関数を使用することで、HTTP GETリクエストを送信して、Web上のファイルを取得することができます。取得したデータは、response.contentに格納されます。

次に、pandasを使用して、CSVデータをデータフレームに変換しています。pd.read_csv()関数を使用することで、CSVデータをデータフレームに変換することができます。

データフレームを表示するには、print()関数を使用します。上記のコードでは、データフレームの先頭5行を表示しています。

WebページのHTMLテーブルデータをデータフレームに変換

Webページ上のHTMLテーブルデータを取得し、pandasでデータフレームに変換することもできます。以下の例では、Pandas公式ドキュメントのページからテーブルデータを取得し、pandasでデータフレームに変換しています。

import requests
import pandas as pd
from bs4 import BeautifulSoup
url = "https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")

table = soup.find_all("table")[0]
df = pd.read_html(str(table))[0]

print(df)

上記のコードでは、requestsを使用してPandas公式ドキュメントのページからHTMLデータを取得しています。取得したHTMLデータは、BeautifulSoupで解析され、HTMLテーブルデータが抽出されます。pd.read_html()関数を使用して、HTMLテーブルデータをデータフレームに変換します。データフレームを表示するには、print()関数を使用します。

データフレームの整形と前処理

データフレームに取り込んだデータを整形し、前処理することで、分析の効率を高めることができます。以下の例では、取り込んだPandas公式ドキュメントのページからテーブルデータの列名を変更しています。

import requests
import pandas as pd
from bs4 import BeautifulSoup
url = "https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")

table = soup.find_all("table")[0]
df = pd.read_html(str(table))[0]

df.columns = ['No', 'explanation']

print(df)

上記のコードでは、pandasのスライス機能を使用して、データフレームから必要な列を選択しています。また、列名を変更して、より明確な名前に変更しています。

まとめ

requestsとpandasを組み合わせることで、Webデータを簡単かつ効率的にデータフレームに取り込むことができます。本記事では、requestsとpandasを使ったWebデータの取り込み方法を紹介しました。また、データフレームの整形と前処理方法についても説明しました。