วิธีอ่านตาราง 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