Как читать 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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.