Як читати таблиці html за допомогою pandas (включаючи приклад)
Ви можете використовувати функцію pandas read_html() для читання HTML-таблиць у pandas DataFrame.
Ця функція використовує такий базовий синтаксис:
df = pd. read_html (' https://en.wikipedia.org/wiki/National_Basketball_Association ')
У наступному прикладі показано, як використовувати цю функцію для читання таблиці назв команд НБА з цієї сторінки Вікіпедії .
Приклад: читайте таблицю HTML за допомогою Pandas
Перш ніж використовувати функцію read_html() , можливо, вам знадобиться встановити lxml:
pip install lxml
Примітка : якщо ви використовуєте ноутбук Jupyter, вам потрібно перезапустити ядро після виконання цієї інсталяції.
Далі ми можемо використати функцію read_html() , щоб прочитати кожну 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')]
Мене цікавлять лише перші два стовпці, тому я можу відфільтрувати 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 за допомогою Pandas