التعامل مع ملفات CSV
Working with CSV Files
قراءة ملفات CSV وكتابتها بالمكتبة القياسية وبـ pandas، مع الانتباه للترميز والفواصل.
المكتبة القياسية
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)، والفاصل، والقيم المفقودة، وأنواع الأعمدة.
أسئلة مراجعة
-
لماذا يظهر النص العربي مشوهاً أحياناً عند فتح CSV؟
بسبب اختلاف الترميز بين الحفظ والقراءة؛ الحل استخدام encoding="utf-8" أو "utf-8-sig" لملفات Excel.
-
كيف تحفظ DataFrame دون عمود الفهرس؟
df.to_csv("file.csv", index=False).
المصادر والمراجع
إكمال الدرس
أكملت كل دروس المسار! يمكنك الآن طلب شهادة إكمال المسار.
اطلب الشهادة