So lesen sie html-tabellen mit pandas (einschließlich beispiel)


Sie können die Funktion pandas read_html() verwenden, um HTML-Tabellen in einen Pandas-DataFrame einzulesen.

Diese Funktion verwendet die folgende grundlegende Syntax:

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

Das folgende Beispiel zeigt, wie Sie diese Funktion verwenden, um eine Tabelle mit NBA-Teamnamen von dieser Wikipedia-Seite zu lesen.

Beispiel: Lesen Sie eine HTML-Tabelle mit Pandas

Bevor Sie die Funktion read_html() verwenden, müssen Sie wahrscheinlich lxml installieren:

 pip install lxml

Hinweis : Wenn Sie ein Jupyter-Notebook verwenden, müssen Sie den Kernel nach Durchführung dieser Installation neu starten.

Als nächstes können wir die Funktion read_html() verwenden, um jede HTML-Tabelle auf dieser Wikipedia-Seite zu lesen:

 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

Wir können sehen, dass auf dieser Seite insgesamt 44 HTML-Tabellen gefunden wurden.

Ich weiß, dass die Tabelle, die mich interessiert, das Wort „Division“ enthält, daher kann ich das Argument „ match“ verwenden, um nur HTML-Tabellen abzurufen, die dieses Wort enthalten:

 #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

Ich kann dann die Namen der Tabellenspalten auflisten :

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

Ich interessiere mich nur für die ersten beiden Spalten, daher kann ich den DataFrame so filtern , dass er nur diese Spalten enthält:

 #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

Die Abschlusstabelle enthält nur die Spalten „Division“ und „Team“.

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie man andere Dateitypen in Pandas liest:

So lesen Sie eine Textdatei mit Pandas
So lesen Sie Excel-Dateien mit Pandas
So lesen Sie CSV-Dateien mit Pandas

Einen Kommentar hinzufügen

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