วิธีอ่านตาราง html ด้วย pandas (รวมถึงตัวอย่าง)


คุณสามารถใช้ฟังก์ชัน pandas read_html() เพื่ออ่านตาราง HTML ลงใน DataFrame ของ pandas

ฟังก์ชันนี้ใช้ไวยากรณ์พื้นฐานต่อไปนี้:

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

ตัวอย่างต่อไปนี้แสดงวิธีใช้ฟังก์ชันนี้เพื่ออ่านตารางชื่อทีม NBA จาก หน้า Wikipedia นี้

ตัวอย่าง: อ่านตาราง HTML ด้วย Pandas

ก่อนที่จะใช้ฟังก์ชัน read_html() คุณอาจต้องติดตั้ง lxml ก่อน:

 pip install lxml

หมายเหตุ : หากคุณใช้โน้ตบุ๊ก Jupyter คุณต้องรีสตาร์ทเคอร์เนลหลังจากดำเนินการติดตั้งนี้

ต่อไป เราสามารถใช้ฟังก์ชัน read_html() เพื่ออ่านตาราง HTML แต่ละรายการใน หน้า Wikipedia นี้ :

 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

เราจะเห็นได้ว่าหน้านี้พบตาราง HTML ทั้งหมด 44 ตาราง

ฉันรู้ว่าตารางที่ฉันสนใจมีคำว่า “แผนก” ดังนั้นฉันจึงสามารถใช้อาร์กิวเมนต์การ จับคู่ เพื่อดึงเฉพาะตาราง HTML ที่มีคำนี้:

 #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

ฉันสามารถ แสดงรายการชื่อ ของคอลัมน์ในตารางได้:

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

ฉันสนใจเฉพาะสองคอลัมน์แรกเท่านั้น ดังนั้นฉันจึง กรอง DataFrame ให้มีเพียงคอลัมน์เหล่านี้ได้:

 #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

ตารางสุดท้ายประกอบด้วยคอลัมน์ “ดิวิชั่น” และ “ทีม” เท่านั้น

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการอ่านไฟล์ประเภทอื่นในแพนด้า:

วิธีอ่านไฟล์ข้อความด้วย Pandas
วิธีอ่านไฟล์ Excel ด้วย Pandas
วิธีอ่านไฟล์ CSV ด้วย Pandas

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *