Cara membaca tabel html dengan pandas (termasuk contoh)


Anda dapat menggunakan fungsi pandas read_html() untuk membaca tabel HTML menjadi DataFrame pandas.

Fungsi ini menggunakan sintaks dasar berikut:

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

Contoh berikut menunjukkan cara menggunakan fungsi ini untuk membaca tabel nama tim NBA dari halaman Wikipedia ini .

Contoh: Membaca tabel HTML dengan Pandas

Sebelum menggunakan fungsi read_html() , Anda mungkin perlu menginstal lxml:

 pip install lxml

Catatan : Jika Anda menggunakan notebook Jupyter, Anda harus me-restart kernel setelah melakukan instalasi ini.

Selanjutnya, kita dapat menggunakan fungsi read_html() untuk membaca setiap tabel HTML di halaman Wikipedia ini :

 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

Kita dapat melihat total 44 tabel HTML ditemukan di halaman ini.

Saya tahu bahwa tabel yang saya minati berisi kata “Divisi”, jadi saya bisa menggunakan argumen kecocokan untuk hanya mengambil tabel HTML yang berisi kata ini:

 #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

Saya kemudian dapat membuat daftar nama kolom tabel:

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

Saya hanya tertarik pada dua kolom pertama, jadi saya bisa memfilter DataFrame agar hanya berisi kolom berikut:

 #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

Tabel terakhir hanya berisi kolom “Divisi” dan “Tim”.

Sumber daya tambahan

Tutorial berikut menjelaskan cara membaca jenis file lain di pandas:

Cara membaca file teks dengan Pandas
Cara membaca file Excel dengan Pandas
Cara membaca file CSV dengan Pandas

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *