Pandas で html テーブルを読み取る方法 (例を含む)
pandas read_html()関数を使用して、HTML テーブルを pandas DataFrame に読み取ることができます。
この関数は次の基本構文を使用します。
df = pd. read_html (' https://en.wikipedia.org/wiki/National_Basketball_Association ')
次の例は、この関数を使用して、 この Wikipedia ページから NBA チーム名の表を読み取る方法を示しています。
例: Pandas を使用して HTML テーブルを読み取る
read_html()関数を使用する前に、おそらく lxml をインストールする必要があります。
pip install lxml
注: Jupyter ノートブックを使用している場合は、このインストールを実行した後にカーネルを再起動する必要があります。
次に、 read_html()関数を使用して、 この Wikipedia ページの各 HTML テーブルを読み取ることができます。
import pandas as pd import numpy as np import matplotlib. pyplot as plt from unicodedata import normalize #read all HTML tables from specific URL tabs = pd. read_html (' https://en.wikipedia.org/wiki/National_Basketball_Association ') #display total number of tables read len (tabs) 44
このページには合計 44 の HTML テーブルが見つかったことがわかります。
関心のあるテーブルに「Division」という単語が含まれていることがわかっているので、 match引数を使用して、この単語を含む HTML テーブルのみを取得できます。
#read HTML tables from specific URL with the word "Division" in them
tabs = pd. read_html (' https://en.wikipedia.org/wiki/National_Basketball_Association ',
match=' Division ')
#display total number of tables read
len (tabs)
1
次に、テーブルの列の名前をリストします。
#define table
df = tabs[0]
#list all column names of table
list (df)
[('Division', 'Eastern Conference'),
('Team', 'Eastern Conference'),
('Location', 'Eastern Conference'),
('Arena', 'Eastern Conference'),
('Capacity', 'Eastern Conference'),
('Coordinates', 'Eastern Conference'),
('Founded', 'Eastern Conference'),
('Joined', 'Eastern Conference'),
('Unnamed: 8_level_0', 'Eastern Conference')]
最初の 2 列のみに興味があるので、これらの列のみが含まれるように DataFrameをフィルターできます。
#filter DataFrame to only contain first two columns
df_final = df. iloc [:, 0:2]
#rename columns
df_final. columns = [' Division ', ' Team ']
#view first few rows of final DataFrame
print ( df_final.head ())
Division Team
0 Atlantic Boston Celtics
1 Atlantic Brooklyn Nets
2 Atlantic New York Knicks
3 Atlantic Philadelphia 76ers
4 Atlantic Toronto Raptors
最後のテーブルには、「部門」列と「チーム」列のみが含まれています。
追加リソース
次のチュートリアルでは、パンダで他のファイル タイプを読み取る方法を説明します。
Pandasでテキストファイルを読み取る方法
Pandas で Excel ファイルを読み取る方法
PandasでCSVファイルを読み取る方法