Html-tabellen lezen met panda's (inclusief een voorbeeld)


U kunt de functie pandas read_html() gebruiken om HTML-tabellen in een pandas DataFrame te lezen.

Deze functie gebruikt de volgende basissyntaxis:

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

In het volgende voorbeeld ziet u hoe u deze functie kunt gebruiken om een tabel met NBA-teamnamen van deze Wikipedia-pagina te lezen.

Voorbeeld: Lees een HTML-tabel met Pandas

Voordat u de functie read_html() gebruikt, moet u waarschijnlijk lxml installeren:

 pip install lxml

Opmerking : als u een Jupyter-notebook gebruikt, moet u de kernel opnieuw opstarten nadat u deze installatie hebt uitgevoerd.

Vervolgens kunnen we de functie read_html() gebruiken om elke HTML-tabel op deze Wikipedia-pagina te lezen:

 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

We kunnen zien dat er in totaal 44 HTML-tabellen op deze pagina zijn gevonden.

Ik weet dat de tabel waarin ik geïnteresseerd ben het woord ‚Divisie‘ bevat, dus ik kan het matchargument gebruiken om alleen HTML-tabellen op te halen die dit woord bevatten:

 #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

Ik kan dan de namen van de tabelkolommen vermelden :

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

Ik ben alleen geïnteresseerd in de eerste twee kolommen, dus ik kan het DataFrame filteren zodat het alleen deze kolommen bevat:

 #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

De finaletafel bevat alleen de kolommen ‘Divisie’ en ‘Team’.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere bestandstypen in panda’s kunt lezen:

Hoe een tekstbestand te lezen met Panda’s
Excel-bestanden lezen met Panda’s
Hoe CSV-bestanden te lezen met Panda’s

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert