معالجة ملفات CSV في بايثون: قراءة، كتابة، وتحليل البيانات

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

التعامل مع ملفات CSV في بايثون

CSV (قيم مفصولة بفواصل) هو أحد أكثر صيغ تخزين البيانات الجدولية شيوعًا. تُستخدم هذه الصيغة في مجالات متعددة: من تصدير جداول Excel إلى تبادل المعلومات بين خدمات الويب وقواعد البيانات.

توفر بايثون أدوات فعّالة للتعامل مع ملفات CSV. يمكنك استخدام الوحدة الأساسية csv أو مكتبة pandas القوية لتحليل البيانات. في هذا المقال، نستعرض طرق قراءة وكتابة ملفات CSV، ومعالجة البيانات، وتجنب الأخطاء، وتحسين الأداء عند العمل مع الملفات الكبيرة.

أساسيات صيغة CSV

بنية ملف CSV

CSV هي صيغة نصية بسيطة. كل سطر في الملف يحتوي على سجل منفصل. تُفصل القيم في السجل برموز خاصة. افتراضيًا، تُستخدم الفاصلة، ولكن يمكن استخدام الفاصلة المنقوطة أو علامة التبويب أو الشرطة العمودية.

محتوى ملف CSV نموذجي يبدو كالتالي:

الاسم,العمر,المدينة
سارة,25,القاهرة
أحمد,30,جدة

مزايا صيغة CSV

تتميز صيغة CSV بعدة مزايا مهمة:

  • بساطة البنية وسهولة القراءة
  • دعم معظم البرامج ولغات البرمجة
  • حجم ملف صغير مقارنة بالصيغ الأخرى
  • إمكانية التحرير في برامج تحرير النصوص
  • عالمية لتبادل البيانات بين الأنظمة المختلفة

التعامل مع CSV عبر وحدة csv

أساسيات قراءة ملفات CSV

وحدة csv القياسية في بايثون مناسبة للعمليات الأساسية مع ملفات CSV. لقراءة البيانات ببساطة، يُستخدم الأسلوب التالي:

import csv

with open("data.csv", newline='', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

نتيجة التنفيذ:

['الاسم', 'العمر', 'المدينة']
['سارة', '25', 'القاهرة']
['أحمد', '30', 'جدة']

القراءة باستخدام العناوين

للتعامل بسهولة مع الأعمدة المسماة، يُستخدم csv.DictReader:

with open("data.csv", encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row["الاسم"], row["المدينة"])

هذه الطريقة تنشئ تلقائيًا قواميس لكل سطر. المفاتيح هي القيم من السطر الأول للملف.

كتابة البيانات إلى ملف CSV

كتابة بسيطة للأسطر

الطريقة الأساسية لكتابة البيانات تستخدم csv.writer:

with open("output.csv", mode='w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(["الاسم", "العمر"])
    writer.writerow(["عمر", 35])

كتابة بيانات القواميس

لكتابة بيانات منظمة، يُفضل استخدام csv.DictWriter:

data = [
    {"الاسم": "مريم", "العمر": 28},
    {"الاسم": "خالد", "العمر": 40},
]

with open("people.csv", "w", newline='', encoding='utf-8') as f:
    writer = csv.DictWriter(f, fieldnames=["الاسم", "العمر"])
    writer.writeheader()
    writer.writerows(data)

تخصيص إعدادات القراءة والكتابة

تتيح وحدة csv تخصيص إعدادات متعددة:

  • delimiter: تحديد فاصل الحقول
  • quotechar: رمز لإحاطة القيم بعلامات اقتباس
  • skipinitialspace: تخطي المسافات بعد الفاصل
  • lineterminator: رمز نهاية السطر

التعامل مع CSV في مكتبة pandas

تثبيت واستيراد pandas

توفر مكتبة pandas إمكانيات أكثر قوة للتعامل مع ملفات CSV:

pip install pandas

قراءة ملفات CSV في pandas

الطريقة الأساسية لقراءة ملفات CSV:


                    

المدونات

توصيات الكتب