Jak czytać tabele html za pomocą pand (w tym przykład)


Możesz użyć funkcji pandas read_html() , aby wczytać tabele HTML do ramki DataFrame pandy.

Ta funkcja wykorzystuje następującą podstawową składnię:

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

Poniższy przykład pokazuje, jak użyć tej funkcji do odczytania tabeli nazw drużyn NBA z tej strony Wikipedii .

Przykład: Przeczytaj tabelę HTML za pomocą Pand

Przed użyciem funkcji read_html() prawdopodobnie będziesz musiał zainstalować lxml:

 pip install lxml

Uwaga : Jeśli używasz notebooka Jupyter, po przeprowadzeniu tej instalacji musisz ponownie uruchomić jądro.

Następnie możemy użyć funkcji read_html() do odczytania każdej tabeli HTML na tej stronie Wikipedii :

 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

Widzimy, że na tej stronie znaleziono łącznie 44 tabele HTML.

Wiem, że interesująca mnie tabela zawiera słowo „Podział”, więc mogę użyć argumentu dopasowania , aby pobrać tylko tabele HTML zawierające to słowo:

 #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

Mogę wtedy wyświetlić nazwy kolumn tabeli:

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

Interesują mnie tylko dwie pierwsze kolumny, więc mogę przefiltrować ramkę DataFrame tak, aby zawierała tylko te kolumny:

 #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

Tabela końcowa zawiera tylko kolumny „Dywizja” i „Zespół”.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak czytać inne typy plików w pandach:

Jak odczytać plik tekstowy za pomocą Pand
Jak czytać pliki Excel za pomocą Pand
Jak czytać pliki CSV za pomocą Pand

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *