Comment lire des tableaux HTML avec Pandas (y compris un exemple)



Vous pouvez utiliser la fonction pandas read_html() pour lire des tableaux HTML dans un pandas DataFrame.

Cette fonction utilise la syntaxe de base suivante :

df = pd.read_html('https://en.wikipedia.org/wiki/National_Basketball_Association')

L’exemple suivant montre comment utiliser cette fonction pour lire un tableau des noms d’équipes NBA de cette page Wikipédia .

Exemple : Lire un tableau HTML avec Pandas

Avant d’utiliser la fonction read_html() , vous devrez probablement installer lxml :

pip install lxml

Remarque : Si vous utilisez un notebook Jupyter, vous devez redémarrer le noyau après avoir effectué cette installation.

Ensuite, nous pouvons utiliser la fonction read_html() pour lire chaque tableau HTML de cette page Wikipédia :

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

Nous pouvons voir qu’un total de 44 tableaux HTML ont été trouvés sur cette page.

Je sais que le tableau qui m’intéresse contient le mot « Division », je peux donc utiliser l’argument match pour récupérer uniquement les tableaux HTML contenant ce mot :

#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

Je peux alors lister les noms des colonnes du tableau :

#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')]

Je ne m’intéresse qu’aux deux premières colonnes, je peux donc filtrer le DataFrame pour qu’il ne contienne que ces colonnes :

#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

Le tableau final ne contient que les colonnes « Division » et « Équipe ».

Ressources additionnelles

Les tutoriels suivants expliquent comment lire d’autres types de fichiers dans pandas :

Comment lire un fichier texte avec Pandas
Comment lire des fichiers Excel avec Pandas
Comment lire des fichiers CSV avec Pandas

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *