البرمجة

دمج ملفات CSV ببيثون

من المفهوم أنك ترغب في دمج ملفي CSV والاحتفاظ بالسجلات المكررة. قمت بتوضيح النتائج التي ترغب في الحصول عليها، وتم توضيح الاختلاف بين الإخراج الحالي والإخراج المرغوب به.

لحل هذه المشكلة، يمكنك تحديث الكود بحيث يتعرف على السجلات المكررة ويقوم بكتابتها أيضًا. سأقدم لك تعديلات على الكود لتحقيق هذا الهدف:

python
import csv import os cd = os.path.dirname(os.path.abspath(__file__)) fafile = os.path.join(cd, 'MJB_FAScores.csv') testscores = os.path.join(cd, 'MJB_TestScores.csv') # قم بإنشاء قاموس لتخزين السجلات المقروءة من الملفين CSV data = {} # قراءة ملفات CSV وتخزين البيانات في القاموس for filename in [fafile, testscores]: with open(filename, 'r') as fp: reader = csv.DictReader(fp) for row in reader: student_number = row['Student_Number'] if student_number in data: # إذا كان الطالب موجودًا بالفعل في القاموس، قم بإضافة السجل إلى القائمة الموجودة له data[student_number].append(row) else: # إذا لم يكن الطالب موجودًا بالفعل، قم بإنشاء قائمة جديدة وأضف السجل إليها data[student_number] = [row] # كتابة البيانات إلى ملف CSV with open('merged.csv', 'w', newline='') as fp: fieldnames = ['Student_Number', 'Name', 'Grade', 'Teacher', 'FA1', 'FA2', 'FA3', 'MAP Reading', 'MAP Math', 'FP Level', 'DSA LN', 'DSA WW', 'DSA SJ', 'DSA DC'] writer = csv.DictWriter(fp, fieldnames=fieldnames) writer.writeheader() # قم بكتابة السجلات من القاموس إلى ملف الإخراج for student_number, records in data.items(): for record in records: writer.writerow(record)

بعد تنفيذ هذه التعديلات، يجب أن يتمكن البرنامج من دمج الملفين CSV والاحتفاظ بالسجلات المكررة كما هو مطلوب. يتم ذلك من خلال استخدام قاموس لتخزين السجلات باستخدام رقم الطالب كمفتاح، مما يسمح بإضافة السجلات المكررة إلى قائمة السجلات الموجودة بالفعل لنفس الطالب.

المزيد من المعلومات

بمعالجة البيانات بشكل فعال، يمكننا الآن التحكم في عملية الدمج والاحتفاظ بالسجلات المكررة كما هو مطلوب. بعد تنفيذ التعديلات على الكود، يمكننا فحص النتائج للتأكد من أن الإخراج يطابق المتطلبات.

الآن دعنا ننتقل لتحليل الكود المعدل:

  1. يتم استيراد مكتبة csv للتعامل مع ملفات CSV ومكتبة os للتعامل مع نظام الملفات.
  2. يتم تعيين مسارات الملفات CSV.
  3. يتم إنشاء قاموس فارغ لتخزين البيانات.
  4. يتم قراءة كل ملف CSV وتخزين البيانات في القاموس. يتم استخدام رقم الطالب كمفتاح للقاموس، ويتم تخزين السجلات المتعلقة بكل طالب في قائمة.
  5. يتم فتح ملف الإخراج “merged.csv” للكتابة.
  6. يتم كتابة البيانات من القاموس إلى ملف الإخراج. يتم تكرار هذه العملية لكل سجل لكل طالب، مما يؤدي إلى الحصول على جميع السجلات في ملف واحد.

باستخدام هذا الكود، يمكننا الآن دمج ملفات CSV بنجاح والاحتفاظ بالسجلات المكررة كما هو مطلوب. يمكن توسيع هذا الكود ليتناسب مع احتياجاتك الخاصة، مثل إجراء معالجة إضافية للبيانات أو إضافة تعليقات توضيحية لزيادة قابلية الفهم.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر