مكتبة Pandas (1): قراءة واستدعاء البيانات من ملفات CSV و Excel برمجياً
مكتبة Pandas (1): قراءة واستدعاء البيانات من ملفات CSV و Excel برمجياً
تبدأ أغلب مشاريع التحليل وبناء النماذج من خطوة تبدو بسيطة ظاهرياً: قراءة البيانات. لكن في الواقع، جودة هذه الخطوة تحدد سلامة كل ما يأتي بعدها من تنظيف وتحويل واستخراج مؤشرات وبناء تقارير. لذلك تُعد مكتبة Pandas من أهم الأدوات في منظومة Data Science لأنها تمنحنا طريقة عملية ومنهجية لتحويل الملفات الخام إلى بنية قابلة للفهم والمعالجة.
إذا كنت قد بدأت رحلتك من مقال مدخل إلى علوم البيانات: كيف تحول الأرقام العشوائية إلى قرارات استراتيجية؟ ثم جهزت بيئتك عبر إعداد مختبر البيانات: تثبيت بيئة Jupyter Notebook ومكتبات التحليل الأساسية، فأنت الآن أمام المرحلة التشغيلية الأولى: استدعاء البيانات من مصادرها اليومية الأكثر شيوعاً، أي ملفات CSV وExcel، تمهيداً لتحويلها إلى كائن DataFrame منظم.
لماذا تعد مرحلة قراءة البيانات خطوة حاسمة؟
ملف البيانات ليس مجرد جدول محفوظ على القرص. هو تمثيل أولي قد يحتوي على مشاكل ترميز، أعمدة مختلطة الأنواع، صفوف ناقصة، رؤوس أعمدة غير دقيقة، أو فواصل غير قياسية. عند قراءة الملف بشكل عشوائي، قد تتسرب هذه المشكلات إلى كامل خط المعالجة ETL بدون أن تلاحظها مبكراً.
لهذا السبب، لا ينظر مهندس البيانات إلى دوال القراءة مثل read_csv() أو read_excel() بوصفها أوامر بسيطة فقط، بل كبوابة تحقق أولى يتم عبرها فرض البنية المنطقية على البيانات قبل دخولها إلى مراحل التنظيف والنمذجة والتجميع.
في بيئات التحليل الاحترافية، أي خطأ مبكر في تحديد نوع عمود مثل التاريخ أو القيم الرقمية قد ينتج عنه انحراف في التقارير، وفشل في عمليات الدمج
Join، أو بطء شديد في الاستعلامات اللاحقة. لذلك تعتبر مرحلة القراءة جزءاً من هندسة البيانات وليست مجرد خطوة تمهيدية.
البدء مع مكتبة Pandas
تعتمد مكتبة Pandas على بنية جدولة مرنة مبنية فوق NumPy. وإذا كنت قد قرأت مكتبة NumPy: القوة الضاربة في معالجة المصفوفات والعمليات الرياضية المعقدة فستفهم بسهولة لماذا تحقق Pandas أداءً جيداً مع الجداول متوسطة وكبيرة الحجم ضمن ذاكرة الجهاز.
أول ما نحتاجه هو استيراد المكتبة وفق الصيغة الشائعة:
import pandas as pd
الاختصار pd أصبح معياراً شبه عالمي في مجتمع بايثون، ما يجعل قراءة الأكواد أسهل وأكثر اتساقاً بين المشاريع التعليمية والاحترافية.
قراءة ملفات CSV باستخدام read_csv()
تنسيق CSV هو الأكثر انتشاراً في تبادل البيانات بين الأنظمة، لأنه خفيف، نصي، وسهل النقل عبر خطوط Pipeline. لكن هذا الانتشار يأتي مع تنوع كبير في الصيغ الداخلية مثل الفواصل والترميز وترتيب الأعمدة.
للقراءة الأساسية يمكن استخدام الكود التالي:
import pandas as pd
df = pd.read_csv("sales_data.csv")
print(df.head())
print(df.info())
في هذا المثال، تقوم الدالة head() بعرض أول الصفوف، بينما تعطي info() ملخصاً لبنية الجدول وأنواع الأعمدة وعدد القيم غير الفارغة. وهذا الفحص السريع ضروري قبل اتخاذ أي قرار تحليلي.
أهم المعاملات العملية عند قراءة CSV
نادراً ما يكون الملف مثالياً، ولهذا توفر Pandas مجموعة معاملات تساعد على ضبط القراءة بدقة:
- تحديد الفاصل باستخدام
sepإذا لم يكن الفاصل فاصلة عادية. - تحديد الترميز عبر
encodingلتجنب تشوه الحروف العربية. - اختيار أعمدة محددة فقط باستخدام
usecols. - فرض نوع بيانات عمود معين عبر
dtype. - تحويل الأعمدة الزمنية مباشرة باستخدام
parse_dates.
import pandas as pd
df = pd.read_csv(
"sales_data.csv",
sep=",",
encoding="utf-8",
usecols=["order_id", "order_date", "customer", "amount"],
dtype={"order_id": str, "customer": str},
parse_dates=["order_date"]
)
print(df.dtypes)
هذا الأسلوب يقلل من الأخطاء الضمنية، ويجعل الجدول الناتج أقرب إلى البنية المطلوبة في التحليل أو التخزين أو التكامل مع قواعد البيانات.
قراءة ملفات Excel باستخدام read_excel()
تظل ملفات Excel حاضرة بقوة في المؤسسات، خصوصاً في التقارير المالية، سجلات الموارد البشرية، ملفات المبيعات، واستخراجات الأنظمة اليدوية. لكنها أكثر تعقيداً من CSV بسبب تعدد الأوراق، ووجود تنسيقات مرئية قد لا تعكس بنية بيانات نظيفة.
لتحميل ورقة واحدة بشكل مباشر يمكن استخدام:
import pandas as pd
df = pd.read_excel("employees.xlsx", sheet_name="Sheet1")
print(df.head())
وإذا كان الملف يحتوي على عدة أوراق، فيمكن قراءة ورقة محددة بالاسم أو الرقم، أو حتى تحميل جميع الأوراق في كائن واحد من نوع dict.
import pandas as pd
all_sheets = pd.read_excel("employees.xlsx", sheet_name=None)
for sheet_name, df in all_sheets.items():
print(sheet_name)
print(df.head())
متى نحتاج إلى تخصيص عملية القراءة؟
في البيئات الواقعية، كثير من ملفات Excel تبدأ بعناوين وصفية أو صفوف ملاحظات قبل الجدول الفعلي. كما قد تحتوي على خلايا فارغة أو أسماء أعمدة مدمجة بصرياً فقط. هنا نستخدم معاملات مثل skiprows وheader وusecols للسيطرة على نقطة بداية الجدول الفعلية.
import pandas as pd
df = pd.read_excel(
"monthly_report.xlsx",
sheet_name="Revenue",
skiprows=2,
usecols="A:D",
header=0
)
print(df.info())
من منظور هندسة البيانات، يفضل تحويل التقارير التشغيلية المتكررة من
Excelإلى تنسيقات معيارية مثلCSVأو جداول قواعد بيانات whenever possible، لأن الاعتماد الطويل على الملفات متعددة التنسيق يرفع كلفة الصيانة ويضعف استقرار خطوطETL.
فحص البيانات بعد الاستدعاء
بعد قراءة الملف، لا تبدأ التنظيف مباشرة قبل تنفيذ فحص بنيوي سريع. هذه الخطوة توفر وقتاً كبيراً وتكشف المشكلات مبكراً. من أفضل الممارسات تشغيل سلسلة فحوص أولية تشمل:
- معاينة أول الصفوف للتأكد من صحة الرؤوس والقيم.
- مراجعة أنواع البيانات الفعلية لكل عمود.
- قياس القيم المفقودة أو غير المتوقعة.
- فحص عدد الصفوف والأعمدة ومؤشرات التكرار.
import pandas as pd
df = pd.read_csv("sales_data.csv")
print(df.head())
print(df.shape)
print(df.isna().sum())
print(df.duplicated().sum())
هذه المخرجات تعطي صورة أولية حاسمة عن جودة المصدر. ففي مشاريع التحليل الكبيرة، أي إهمال في هذه المرحلة قد يقود إلى بناء مؤشرات أداء KPI مضللة أو تدريب نماذج Machine Learning على بيانات غير مستقرة.
نصائح أداء مهمة عند التعامل مع ملفات كبيرة
رغم أن Pandas قوية جداً، إلا أنها تعمل أساساً داخل ذاكرة الجهاز. لذلك يجب الانتباه عندما تزداد أحجام الملفات، خصوصاً في سياقات Big Data.
- اقرأ الأعمدة التي تحتاجها فقط بدلاً من تحميل الملف كاملاً.
- حدد أنواع البيانات مسبقاً لتقليل الاستهلاك غير الضروري للذاكرة.
- استخدم
chunksizeعند معالجة ملفات ضخمة على دفعات. - انقل الأحمال الهائلة إلى أدوات موزعة مثل
Apache Sparkإذا تجاوزت البيانات حدود الذاكرة المحلية.
import pandas as pd
chunks = pd.read_csv("large_sales_data.csv", chunksize=50000)
for chunk in chunks:
summary = chunk.groupby("customer")["amount"].sum()
print(summary.head())
عندما تصبح ملفات الإدخال كبيرة جداً أو متدفقة من أنظمة متعددة، فإن
Pandasتظل ممتازة لمرحلة الاستكشاف السريع والنمذجة الأولية، لكن البنية الإنتاجية الأفضل غالباً تتطلب تكاملاً مع محركات موزعة مثلSparkأو مخازن بياناتSQL/NoSQLبحسب طبيعة الأحمال والسرعة المطلوبة.
خاتمة
إتقان قراءة البيانات من ملفات CSV وExcel عبر مكتبة Pandas ليس مجرد مهارة تشغيلية صغيرة، بل هو أساس حقيقي لكل مشروع تحليلي محترف. فكل قرار صحيح في مرحلة الإدخال ينعكس مباشرة على دقة التنظيف، وسلامة التحويل، وموثوقية النتائج النهائية.
في هذا الجزء، ركزنا على الاستدعاء المنهجي للبيانات وفهم أهم المعاملات العملية التي تمنحك سيطرة كاملة على بنية الملف منذ اللحظة الأولى. وفي الأجزاء التالية من السلسلة، تصبح الخطوة الطبيعية التالية هي تنظيف البيانات، معالجة القيم المفقودة، توحيد الأنواع، ثم بناء تحليلات أكثر عمقاً اعتماداً على DataFrame نظيف وقابل للثقة.