كيفية قراءة جداول html باستخدام pandas (بما في ذلك مثال)


يمكنك استخدام وظيفة read_html() الباندا لقراءة جداول HTML في إطار بيانات الباندا.

تستخدم هذه الوظيفة بناء الجملة الأساسي التالي:

 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 في صفحة ويكيبيديا هذه :

 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

يمكننا أن نرى أنه تم العثور على إجمالي 44 جدول HTML في هذه الصفحة.

أعلم أن الجدول الذي يهمني يحتوي على كلمة “Division”، لذا يمكنني استخدام وسيطة المطابقة لاسترداد جداول 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

يحتوي الجدول النهائي على عمودي “القسم” و”الفريق” فقط.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية قراءة أنواع الملفات الأخرى في الباندا:

كيفية قراءة ملف نصي مع الباندا
كيفية قراءة ملفات Excel مع Pandas
كيفية قراءة ملفات CSV مع Pandas

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *