العمل مع ملفات 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 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.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 إنشاء اختبار