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

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

أ ملف CSV (القيم المفصولة بفواصل). هو ملف نصي عادي حيث يمثل كل سطر سجل بيانات ويتم فصل الحقول الموجودة داخل كل سجل بفواصل. يتم استخدامه بشكل شائع لجداول البيانات وقواعد البيانات نظرًا لبساطته وسهولة قراءته.

فيما يلي بعض العمليات التي نقوم بها أثناء العمل مع ملفات Python CSV في Python

قراءة ملف CSV

تتم القراءة من ملف CSV باستخدام كائن القارئ. يتم فتح ملف CSV كملف نصي باستخدام وظيفة open() المضمنة في Python والتي تقوم بإرجاع كائن ملف. في هذا المثال، نقوم أولاً بفتح ملف CSV في وضع القراءة، ويتم تحويل كائن الملف إلى كائن csv.reader ويتم تنفيذ المزيد من العمليات. ويرد أدناه رمز وشرح مفصل.

Python
   import   csv   filename   =   'aapl.csv'   # File name   fields   =   []   # Column names   rows   =   []   # Data rows   with   open  (  filename     'r'  )   as   csvfile  :   csvreader   =   csv  .  reader  (  csvfile  )   # Reader object   fields   =   next  (  csvreader  )   # Read header   for   row   in   csvreader  :   # Read rows   rows  .  append  (  row  )   print  (  'Total no. of rows:   %d  '   %   csvreader  .  line_num  )   # Row count   print  (  'Field names are: '   +   ' '  .  join  (  fields  ))   print  (  '  n  First 5 rows are:  n  '  )   for   row   in   rows  [:  5  ]:   for   col   in   row  :   print  (  '  %10s  '   %   col     end  =  ' '  )   print  (  '  n  '  )   

الإخراج

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

يستخدم المثال أعلاه ملف CSV aapl.csv والتي يمكن تحميلها من هنا .

توضيح:

  • مع فتح (...) يفتح ملف CSV في وضع القراءة بأمان باستخدام مدير السياق.
  • csv.reader(ملف csv) يحول الملف إلى كائن قارئ CSV.
  • التالي(csvreader) يستخرج الصف الأول كرؤوس أعمدة.
  • حلقة من خلال com.csvreader لإلحاق كل صف (كقائمة) بالصفوف.
  • قم بطباعة إجمالي رؤوس الصفوف وصفوف البيانات الخمسة الأولى في طريقة عرض منسقة.

قراءة ملفات CSV في قاموس باستخدام ملف CSV

يمكننا قراءة ملف CSV في القاموس باستخدام وحدة CSV في Python وفئة csv.DictReader. هنا مثال:

لنفترض أن لدينا الموظفين.csv الملف والمحتوى بداخله سيكون:

namedepartmentbirthday_month
جون سميثHRيوليو
أليس جونسونITOأكتوبر
بوب ويليامزالشؤون الماليةيناير

مثال: يؤدي هذا إلى قراءة كل صف كقاموس (الرؤوس كمفاتيح) ثم إلحاقه بالقائمة.

Python
   import   csv   with   open  (  'employees.csv'     mode  =  'r'  )   as   file  :   csv_reader   =   csv  .  DictReader  (  file  )   # Create DictReader   data_list   =   []   # List to store dictionaries   for   row   in   csv_reader  :   data_list  .  append  (  row  )   for   data   in   data_list  :   print  (  data  )   

الإخراج:

{'اسم': 'قسم' جون سميث: 'HR' 'birthday_month': 'يوليو'}
{'name': 'أليس جونسون' 'القسم': 'IT' 'birthday_month': 'أكتوبر'}
{'الاسم': 'قسم' بوب ويليامز: 'الشؤون المالية' 'birthday_month': 'يناير'}

توضيح:

  • مع فتح (...) يفتح الملف باستخدام مدير السياق.
  • csv.DictReader (ملف) يقرأ كل صف كقاموس باستخدام الرؤوس كمفاتيح.
  • data_list.append(صف) يخزن كل قاموس في القائمة.

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

للكتابة إلى ملف CSV، نقوم أولاً بفتح ملف CSV في وضع الكتابة. يتم تحويل كائن الملف إلى كائن csv.writer ويتم تنفيذ المزيد من العمليات. ويرد أدناه رمز وشرح مفصل.

Python
   import   csv   # Define header and data rows   fields   =   [  'Name'     'Branch'     'Year'     'CGPA'  ]   rows   =   [   [  'Nikhil'     'COE'     '2'     '9.0'  ]   [  'Sanchit'     'COE'     '2'     '9.1'  ]   [  'Aditya'     'IT'     '2'     '9.3'  ]   [  'Sagar'     'SE'     '1'     '9.5'  ]   [  'Prateek'     'MCE'     '3'     '7.8'  ]   [  'Sahil'     'EP'     '2'     '9.1'  ]   ]   filename   =   'university_records.csv'   with   open  (  filename     'w'  )   as   csvfile  :   csvwriter   =   csv  .  writer  (  csvfile  )   # Create writer object   csvwriter  .  writerow  (  fields  )   # Write header   csvwriter  .  writerows  (  rows  )   # Write multiple rows   

توضيح:

  • الحقول يحدد رؤوس الأعمدة والصفوف التي تحتوي على البيانات كقائمة من القوائم.
  • مع فتح (...'ث') يفتح الملف في وضع الكتابة باستخدام مدير السياق.
  • كاتب CSV (ملف CSV) ينشئ كائن كاتب للكتابة إلى ملف CSV.
  • صف الكتابة (الحقول) يكتب صف الرأس إلى الملف.
  • الكاتب (الصفوف) يكتب كافة صفوف البيانات إلى ملف CSV مرة واحدة.

كتابة قاموس إلى ملف CSV

لكتابة قاموس إلى ملف CSV، يتم تحويل كائن الملف (csvfile) إلى كائن DictWriter. ويرد أدناه مثال مفصل مع الشرح والكود.

Python
   # importing the csv module   import   csv   # my data rows as dictionary objects   mydict   =   [{  'branch'  :   'COE'     'cgpa'  :   '9.0'     'name'  :   'Nikhil'     'year'  :   '2'  }   {  'branch'  :   'COE'     'cgpa'  :   '9.1'     'name'  :   'Sanchit'     'year'  :   '2'  }   {  'branch'  :   'IT'     'cgpa'  :   '9.3'     'name'  :   'Aditya'     'year'  :   '2'  }   {  'branch'  :   'SE'     'cgpa'  :   '9.5'     'name'  :   'Sagar'     'year'  :   '1'  }   {  'branch'  :   'MCE'     'cgpa'  :   '7.8'     'name'  :   'Prateek'     'year'  :   '3'  }   {  'branch'  :   'EP'     'cgpa'  :   '9.1'     'name'  :   'Sahil'     'year'  :   '2'  }]   # field names   fields   =   [  'name'     'branch'     'year'     'cgpa'  ]   # name of csv file   filename   =   'university_records.csv'   # writing to csv file   with   open  (  filename     'w'  )   as   csvfile  :   # creating a csv dict writer object   writer   =   csv  .  DictWriter  (  csvfile     fieldnames  =  fields  )   # writing headers (field names)   writer  .  writeheader  ()   # writing data rows   writer  .  writerows  (  mydict  )   

الإخراج

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

ضع في اعتبارك أن ملف CSV يبدو بهذا الشكل في نص عادي:

سجل الجامعةسجل الجامعة

توضيح:

  • مع فتح (...) يفتح الملف بأمان باستخدام مدير السياق.
  • csv.DictWriter(... ) يقوم بتعيين مفاتيح القاموس لأعمدة CSV.
  • رأس الكتابة () يكتب رؤوس الأعمدة.
  • كاتب (mydict) يكتب كافة القواميس كصفوف CSV.

قراءة ملفات CSV باستخدام الباندا

يمكننا أن نقرأ أ بايثون CSV الملفات مع الباندا باستخدام الباندا.read_csv() وظيفة. هنا مثال:

لنفترض أن لدينا ملف jobs.csv والمحتوى بداخله سيكون:

namedepartmentbirthday_month
جون سميثHRيوليو
أليس جونسونITOأكتوبر
بوب ويليامزالشؤون الماليةيناير

في هذا المثال، يقرأ pd.read_csv() ملف CSV في Pandas DataFrame. يمكن استخدام DataFrame الناتج في مختلف مهام معالجة البيانات وتحليلها.

Python
   import   pandas   as   pd   # Read the CSV file into a DataFrame   df   =   pd  .  read_csv  (  'employees.csv'  )   # Display the DataFrame   print  (  df  )   

الإخراج:

اسم القسم عيد ميلاد_شهر
0 جون سميث HR يوليو
1 أليس جونسون تكنولوجيا المعلومات أكتوبر
2 بوب ويليامز المالية يناير

يمكننا الوصول إلى بيانات تصفية أعمدة محددة وتنفيذ عمليات مختلفة باستخدام وظيفة pandas DataFrame. على سبيل المثال، إذا أردنا الوصول إلى عمود "الاسم"، فيمكننا استخدام df['name'].

Python
   # Access the 'name' column   names   =   df  [  'name'  ]   print  (  names  )   

الإخراج :

0 جون سميث
1 أليس جونسون
2 بوب ويليامز
الاسم: اسم dtype: كائن

كتابة ملفات CSV مع الباندا

يمكننا استخدام Pandas لكتابة ملفات CSV. يمكن القيام بذلك باستخدام pd.DataFrame() وظيفة. في هذا المثال الباندا تُستخدم المكتبة لتحويل قائمة القواميس (mydict) إلى DataFrame الذي يمثل البيانات الجدولية. تتم بعد ذلك كتابة DataFrame إلى ملف Python CSV المسمى "output.csv" باستخدام طريقة to_csv لإنشاء ملف بيانات منظم وقابل للقراءة لمزيد من التحليل أو المشاركة.

Python
   import   pandas   as   pd   mydict   =   [   {  'branch'  :   'COE'     'cgpa'  :   '9.0'     'name'  :   'Nikhil'     'year'  :   '2'  }   {  'branch'  :   'COE'     'cgpa'  :   '9.1'     'name'  :   'Sanchit'     'year'  :   '2'  }   {  'branch'  :   'IT'     'cgpa'  :   '9.3'     'name'  :   'Aditya'     'year'  :   '2'  }   {  'branch'  :   'SE'     'cgpa'  :   '9.5'     'name'  :   'Sagar'     'year'  :   '1'  }   {  'branch'  :   'MCE'     'cgpa'  :   '7.8'     'name'  :   'Prateek'     'year'  :   '3'  }   {  'branch'  :   'EP'     'cgpa'  :   '9.1'     'name'  :   'Sahil'     'year'  :   '2'  }   ]   # Create a DataFrame from the list of dictionaries   df   =   pd  .  DataFrame  (  mydict  )   # Write the DataFrame to a CSV file   df  .  to_csv  (  'output.csv'     index  =  False  )   

ملف الإخراج CSV:

Branchcgpanameyear
COE9.0Nikhil2
COE9.1سانشيت2
IT9.3Aditya2
SE9.5ساجار1
MCE7.8Prateek3
EP9.1Sahil2

تخزين رسائل البريد الإلكتروني في ملفات CSV

نبدأ باستيراد وحدة CSV واستخدامها لتخزين الأسماء ورسائل البريد الإلكتروني كقيم مفصولة بفواصل. باستخدام الدالة open() نقوم بإنشاء ملف CSV ثم كتابة كل صف باستخدام كائن كاتب مع أعمدة منفصلة للأسماء ورسائل البريد الإلكتروني.

Python
   # importing the csv module   import   csv   # field names   fields   =   [  'Name'     'Email'  ]   # data rows of csv file   rows   =   [   [  'Nikhil'     '[email protected]'  ]   [  'Sanchit'     '[email protected]'  ]   [  'Aditya'     '[email protected]'  ]   [  'Sagar'     '[email protected]'  ]   [  'Prateek'     '[email protected]'  ]   [  'Sahil'     '[email protected]'  ]]   # name of csv file   filename   =   'email_records.csv'   # writing to csv file   with   open  (  filename     'w'  )   as   csvfile  :   # creating a csv writer object   csvwriter   =   csv  .  writer  (  csvfile  )   # writing the fields   csvwriter  .  writerow  (  fields  )   # writing the data rows   csvwriter  .  writerows  (  rows  )   

الإخراج:

رسائل البريد الإلكتروني في CSVرسائل البريد الإلكتروني في CSV إنشاء اختبار