עבודה עם קבצי csv ב-Python

עבודה עם קבצי csv ב-Python

א קובץ CSV (ערכים מופרדים בפסיק). הוא קובץ טקסט רגיל שבו כל שורה מייצגת רשומת נתונים ושדות בתוך כל רשומה מופרדים בפסיקים. הוא משמש בדרך כלל עבור גיליונות אלקטרוניים ומסדי נתונים בשל הפשטות והקריאה שלו.

להלן כמה פעולות שאנו מבצעים תוך כדי עבודה עם קבצי Python CSV ב-Python

קריאת קובץ CSV

הקריאה מקובץ CSV מתבצעת באמצעות אובייקט הקורא. קובץ ה-CSV נפתח כקובץ טקסט עם פונקציית open() המובנית של Python שמחזירה אובייקט קובץ. בדוגמה זו אנו פותחים תחילה את קובץ ה-CSV במצב READ קובץ האובייקט מומר לאובייקט 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 ב-Python

הדוגמה לעיל משתמשת בקובץ CSV aapl.csv שממנו ניתן להוריד כָּאן .

הֶסבֵּר:

  • עם פתוח (...) פותח את קובץ ה-CSV במצב קריאה בבטחה באמצעות מנהל הקשר.
  • csv.reader(csvfile) הופך את הקובץ לאובייקט קורא CSV.
  • הבא(csvreader) מחלץ את השורה הראשונה ככותרות עמודות.
  • לולאה דרך csvreader כדי להוסיף כל שורה (כרשימה) לשורות.
  • הדפס כותרות כולל של שורות ו-5 שורות נתונים ראשונות בתצוגה מעוצבת.

קריאת קבצי CSV לתוך מילון עם csv

אנו יכולים לקרוא קובץ CSV לתוך מילון באמצעות מודול ה-csv ב-Python והמחלקה csv.DictReader. הנה דוגמה:

נניח שיש לנו א עובדים.csv הקובץ והתוכן בתוכו יהיו:

namedepartmentbirthday_month
ג'ון סמית' יולי
אליס ג'ונסון באוקטובר
בוב וויליאמס פיננסים ינואר

דוּגמָה: זה קורא כל שורה כמילון (כותרות כמקשים) ואז מוסיף אותה לרשימה .

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  )   

תְפוּקָה:

{'name': 'John Smith' 'department': 'HR' 'birthday_month': 'יולי'}
{'name': 'Alice Johnson' 'department': 'IT' 'birthday_month': 'אוקטובר'}
{'name': 'Bob Williams' 'department': 'Finance' 'birthday_month': 'ינואר'}

הֶסבֵּר:

  • עם פתוח (...) פותח את הקובץ באמצעות מנהל הקשר.
  • csv.DictReader(קובץ) קורא כל שורה כמילון באמצעות כותרות כמקשים.
  • data_list.append(row) מאחסן כל מילון ברשימה.

כתיבה לקובץ CSV

כדי לכתוב לקובץ CSV אנו פותחים תחילה את קובץ ה-CSV במצב WRITE. אובייקט הקובץ מומר לאובייקט 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   

הֶסבֵּר:

  • שדות מגדיר את כותרות העמודות והשורות מכיל את הנתונים כרשימה של רשימות.
  • עִם פתוח (... 'w') פותח את הקובץ במצב כתיבה באמצעות מנהל הקשר.
  • csv.writer(csvfile) יוצר אובייקט כותב לכתיבה ל-CSV.
  • Writerow (שדות) כותב את שורת הכותרת לקובץ.
  • כותבים (שורות) כותב את כל שורות הנתונים ל-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 ב-Pythonקובץ csv

קחו בחשבון שקובץ CSV נראה כך בטקסט רגיל:

שיא אוניברסיטאישיא אוניברסיטאי

הֶסבֵּר:

  • עם פתוח (...) פותח קובץ בצורה בטוחה באמצעות מנהל הקשר.
  • csv.DictWriter(... ) ממפה מפתחות מילון לעמודות CSV.
  • writeheader() כותב כותרות עמודות.
  • Writerows (mydict) כותב את כל המילונים כשורות CSV.

קריאת קובצי CSV עם Pandas

אנחנו יכולים לקרוא א Python CSV קבצים עם Pandas באמצעות pandas.read_csv() פוּנקצִיָה. הנה דוגמה:

נניח שיש לנו קובץ עובדים.csv והתוכן בתוכו יהיה:

namedepartmentbirthday_month
ג'ון סמית' יולי
אליס ג'ונסון באוקטובר
בוב וויליאמס פיננסים ינואר

בדוגמה זו 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 אליס ג'ונסון IT אוקטובר
2 בוב וויליאמס פיננסים ינואר

אנו יכולים לגשת לסנן נתונים של עמודות ספציפיות ולבצע פעולות שונות באמצעות פונקציונליות Panda DataFrame. לדוגמה, אם נרצה לגשת לעמודה 'שם' נוכל להשתמש ב-df['name'].

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

תְפוּקָה :

0 ג'ון סמית
1 אליס ג'ונסון
2 בוב וויליאמס
שם: שם dtype: אובייקט

כתיבת קבצי CSV עם Pandas

אנחנו יכולים להשתמש ב-Pandas כדי לכתוב קבצי CSV. זה יכול לעשות באמצעות pd.DataFrame() פוּנקצִיָה. בדוגמה זו ה פנדות הספרייה משמשת להמרת רשימה של מילונים (mydict) ל-DataFrame המייצג נתונים טבלאיים. לאחר מכן, ה-DataFrame נכתב לקובץ CSV של Python בשם '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.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
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 צור חידון