قراءة البيانات: 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، والنتيجة إطار بيانات تمامًا كالملف:
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())
في مشروعك الحقيقي تستبدل StringIO(csv_data) باسم الملف. كل ما بعدها لا يتغيّر — وهذا جمال Pandas.
٣قراءة JSON من واجهة
واجهات الويب تردّ JSON. read_json يحوّله إلى جدول حين يكون قائمة سجلّات متجانسة:
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())
توقّع وتحقّق
دالة قراءة CSV في Pandas:
صيغة واجهات البرمجة الشائعة:
لقراءة CSV من نصّ لا ملف نستخدم:
df.dtypes يعطي:
الخلاصة
CSVجدول بفواصل، وJSONصيغة الواجهات؛Pandasيقرأ الاثنتين بسطر.read_csvوread_jsonنقطتا الدخول؛ ومع النصّ نلفّه بـStringIO.- بعد القراءة افحص
dfوdf.dtypesلتتأكد أن الأعمدة بأنواعها الصحيحة. - في المشروع الحقيقي تستبدل النصّ باسم الملف، وبقية الكود كما هو.
تحدٍّ برمجي: اقرأ وحلّل
تمهيدياقرأ بيانات CSV المضمَّنة، ثم اطبع عدد الصفوف، واسم الصفحة الأعلى زيارةً.
- اطبع عدد صفوف الجدول.
- اطبع قيمة
pageصاحبة أكبرvisits.
ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:
import pandas as pdfrom io import StringIOcsv_data = """page,visitshome,1200products,860blog,1500cart,430"""df = pd.read_csv(StringIO(csv_data))# اطبع عدد الصفوف ثم اسم الصفحة الأعلى زيارة
💡 تلميح 1
len(df).💡 تلميح 2
df.loc[df["visits"].idxmax(), "page"].حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.
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"])