Python للذكاء الاصطناعي متقدم · Advanced 10 دقيقة

التعامل مع ملفات CSV

Working with CSV Files

قراءة ملفات CSV وكتابتها بالمكتبة القياسية وبـ pandas، مع الانتباه للترميز والفواصل.

تقدّمك في المسار0%

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

import csv

with open("students.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(["name", "score"])
    writer.writerow(["سارة", 91])

with open("students.csv", newline="", encoding="utf-8") as f:
    for row in csv.DictReader(f):
        print(row["name"], int(row["score"]))

with تضمن إغلاق الملف تلقائياً، وnewline="" توصي بها وثائق وحدة csv لتجنب أسطر فارغة إضافية.

باستخدام pandas

import pandas as pd

df = pd.read_csv("students.csv", encoding="utf-8")
df = pd.read_csv("data.csv", sep=";", na_values=["NA", "-"],
                 parse_dates=["date"])
df.to_csv("out.csv", index=False, encoding="utf-8")

مسائل عملية

  • الترميز: إذا كان الملف سيُفتح في Excel على Windows فاستخدم encoding="utf-8-sig" ليظهر النص العربي صحيحاً.
  • الفاصل: بعض الإعدادات الإقليمية تستخدم ; بدلاً من ,.
  • الأنواع: تحقق بـ df.dtypes؛ الأعمدة الرقمية التي تحتوي نصوصاً تُقرأ كـ object.
  • الملفات الكبيرة: استخدم chunksize للقراءة على دفعات، أو usecols لقراءة أعمدة محددة.

مثال قراءة على دفعات

total = 0
for chunk in pd.read_csv("big.csv", chunksize=100_000):
    total += chunk["amount"].sum()

مصطلحات الدرس

الترميز Encoding
طريقة تحويل الأحرف إلى بايتات عند حفظ النص وقراءته، وأشهرها UTF-8.
ملف CSV Comma-Separated Values
ملف نصي يمثل جدولاً، كل سطر فيه صف والقيم مفصولة بفاصل مثل الفاصلة.

الملخص

CSV صيغة نصية لتخزين البيانات الجدولية، كل سطر فيها صف وقيمه مفصولة بفاصل. يمكن التعامل معها بوحدة csv في المكتبة القياسية أو بالدالة pandas.read_csv الأكثر استخداماً في تحليل البيانات. من المسائل العملية المهمة: الترميز (UTF-8)، والفاصل، والقيم المفقودة، وأنواع الأعمدة.

أسئلة مراجعة

  1. لماذا يظهر النص العربي مشوهاً أحياناً عند فتح CSV؟

    بسبب اختلاف الترميز بين الحفظ والقراءة؛ الحل استخدام encoding="utf-8" أو "utf-8-sig" لملفات Excel.

  2. كيف تحفظ DataFrame دون عمود الفهرس؟

    df.to_csv("file.csv", index=False).

المصادر والمراجع

  1. csv — CSV File Reading and Writing — Python documentation
  2. pandas.read_csv — pandas documentation
  3. Reading and Writing Files — Python tutorial

إكمال الدرس