Pode utilizar a função pandas read_html() para ler tabelas HTML num DataFrame pandas.
Esta função utiliza a seguinte sintaxe básica:
df = pd. read_html (' //en.wikipedia.org/wiki/National_Basketball_Association ')
O exemplo seguinte mostra como utilizar esta função para ler uma tabela de nomes de equipas da NBA a partir desta página da Wikipédia.
Exemplo: Ler tabela HTML com Pandas
Antes de utilizar o read_html() provavelmente terá de instalar o lxml:
pip install lxml
Nota Se estiver a utilizar um bloco de notas Jupyter, tem de reiniciar o kernel depois de efetuar esta instalação.
De seguida, podemos utilizar o read_html() para ler todas as tabelas HTML nesta página da Wikipédia:
import pandas as pd import numpy as np import matplotlib. pyplot as plt from unicodedata import normalize #lê todas as tabelas HTML de um URL específico tabs = pd. read_html (' //en.wikipedia.org/wiki/National_Basketball_Association ') #exibe o número total de tabelas lidas len (tabs) 44
Podemos ver que foi encontrado um total de 44 tabelas HTML nesta página.
Sei que a tabela em que estou interessado tem a palavra "Division", pelo que posso utilizar o comando jogo para obter apenas tabelas HTML que contenham esta palavra:
#lê tabelas HTML de um URL específico com a palavra "Divisão" tabs = pd. read_html (' //en.wikipedia.org/wiki/National_Basketball_Association ', match="Division") #exibe o número total de tabelas lidas len (tabs) 1
Posso então listar os nomes das colunas da tabela:
#define table df = tabs #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')]
Só estou interessado nas duas primeiras colunas, pelo que posso filtrar o DataFrame para conter apenas estas colunas:
#filtrar DataFrame para conter apenas as duas primeiras colunas df_final = df. iloc [:, 0:2] #renomear colunas df_final. columns = [' Division ', ' Team '] #ver as primeiras linhas do DataFrame final 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
O quadro final contém apenas as colunas "Divisão" e "Equipa".