طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 244 · علم البيانات للويب
الدرس 3 · الوحدة 2: استخراج البيانات من مصادر الويب

قراءة البيانات: CSV و JSON

من ملفّ أو واجهة إلى جدولٍ جاهز للتحليل بسطرٍ واحد. ⏱ نحو 35 دقيقة.

بعد هذا الدرس ستستطيع أن:
  • تقرأ CSV و JSON إلى إطار بيانات.
  • تقرأ من نصّ مضمَّن عبر StringIO.
  • تميّز متى تصلح كل دالة قراءة.
  • تفحص أنواع الأعمدة بعد القراءة.

١البيانات تأتي بصيغ

قبل أن تحلّل، عليك أن تقرأ. بيانات الويب تصلك غالبًا بصيغتين: CSV جدول نصّي بفواصل (تصدّره لوحات التحكم وجداول البيانات)، وJSON صيغة واجهات البرمجة API. Pandas يقرأ الاثنتين بسطر واحد.

الصيغةالشكلالدالة في Pandas
CSVصفوف وأعمدة مفصولة بفواصلpd.read_csv(...)
JSONكائنات ومصفوفات متداخلةpd.read_json(...) أو pd.json_normalize(...)

٢قراءة CSV من نصّ

في الواقع تقرأ من ملف: pd.read_csv("visits.csv"). وهنا — لنبقى داخل المتصفح — نقرأ من نصّ CSV مضمَّن عبر StringIO، والنتيجة إطار بيانات تمامًا كالملف:

main.py
import pandas as pdfrom io import StringIO csv_data = """page,visits,bouncehome,1200,0.52products,860,0.31cart,430,0.40checkout,210,0.22""" df = pd.read_csv(StringIO(csv_data))print(df)print("أعلى ارتداد:", df["bounce"].max())print("إجمالي الزيارات:", df["visits"].sum())
Shell×
>>> %Run main.py
page visits bounce
0 home 1200 0.52
1 products 860 0.31
2 cart 430 0.40
3 checkout 210 0.22
أعلى ارتداد: 0.52
إجمالي الزيارات: 2700
>>>

في مشروعك الحقيقي تستبدل StringIO(csv_data) باسم الملف. كل ما بعدها لا يتغيّر — وهذا جمال Pandas.

٣قراءة JSON من واجهة

واجهات الويب تردّ JSON. read_json يحوّله إلى جدول حين يكون قائمة سجلّات متجانسة:

main.py
import pandas as pdfrom io import StringIO json_data = '''[  {"user": "u1", "country": "SA", "orders": 5},  {"user": "u2", "country": "EG", "orders": 2},  {"user": "u3", "country": "SA", "orders": 8}]''' df = pd.read_json(StringIO(json_data))print(df)print("عدد المستخدمين:", len(df))print("إجمالي الطلبات:", df["orders"].sum())
Shell×
>>> %Run main.py
user country orders
0 u1 SA 5
1 u2 EG 2
2 u3 SA 8
عدد المستخدمين: 3
إجمالي الطلبات: 15
>>>

توقّع وتحقّق

دالة قراءة CSV في Pandas:

صيغة واجهات البرمجة الشائعة:

لقراءة CSV من نصّ لا ملف نستخدم:

df.dtypes يعطي:

الخلاصة

تحدٍّ برمجي: اقرأ وحلّل

تمهيدي

اقرأ بيانات CSV المضمَّنة، ثم اطبع عدد الصفوف، واسم الصفحة الأعلى زيارةً.

المطلوب:
  • اطبع عدد صفوف الجدول.
  • اطبع قيمة page صاحبة أكبر visits.

ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:

main.py
import pandas as pdfrom io import StringIOcsv_data = """page,visitshome,1200products,860blog,1500cart,430"""df = pd.read_csv(StringIO(csv_data))# اطبع عدد الصفوف ثم اسم الصفحة الأعلى زيارة
المطلوب×
4
blog
💡 تلميح 1
عدد الصفوف: len(df).
💡 تلميح 2
صاحب الأكبر: df.loc[df["visits"].idxmax(), "page"].

حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.

main.py
import pandas as pdfrom io import StringIOcsv_data = """page,visitshome,1200products,860blog,1500cart,430"""df = pd.read_csv(StringIO(csv_data))print(len(df))print(df.loc[df["visits"].idxmax(), "page"])
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس