Как читать html-таблицы с помощью pandas (включая пример)


Вы можете использовать функцию pandas read_html() для чтения HTML-таблиц в DataFrame pandas.

Эта функция использует следующий базовый синтаксис:

 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-таблицы.

Я знаю, что интересующая меня таблица содержит слово «Деление», поэтому я могу использовать аргумент 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *