Як читати таблиці 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *