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