Pandalarla html tabloları nasıl okunur (bir örnek dahil)


HTML tablolarını pandas DataFrame’e okumak için pandas read_html() işlevini kullanabilirsiniz.

Bu işlev aşağıdaki temel sözdizimini kullanır:

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

Aşağıdaki örnek, bu Vikipedi sayfasından NBA takım isimleri tablosunu okumak için bu işlevin nasıl kullanılacağını gösterir.

Örnek: Pandalarla bir HTML tablosunu okuyun

Read_html() işlevini kullanmadan önce muhtemelen lxml’i yüklemeniz gerekecektir:

 pip install lxml

Not : Eğer Jupyter notebook kullanıyorsanız bu kurulumu gerçekleştirdikten sonra kerneli yeniden başlatmanız gerekmektedir.

Daha sonra, bu Wikipedia sayfasındaki her HTML tablosunu okumak için read_html() işlevini kullanabiliriz:

 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

Bu sayfada toplam 44 HTML tablosunun bulunduğunu görebiliriz.

İlgilendiğim tablonun “Bölme” sözcüğünü içerdiğini biliyorum, dolayısıyla yalnızca bu sözcüğü içeren HTML tablolarını almak için match argümanını kullanabilirim:

 #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

Daha sonra tablo sütunlarının adlarını listeleyebilirim :

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

Yalnızca ilk iki sütunla ilgileniyorum, bu nedenle DataFrame’i yalnızca bu sütunları içerecek şekilde filtreleyebilirim :

 #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

Final tablosu yalnızca “Bölüm” ve “Takım” sütunlarını içerir.

Ek kaynaklar

Aşağıdaki eğitimler pandalarda diğer dosya türlerinin nasıl okunacağını açıklamaktadır:

Pandalar ile bir metin dosyası nasıl okunur
Pandalar ile Excel dosyaları nasıl okunur
Pandalar ile CSV dosyaları nasıl okunur

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir