עבודה עם קבצי 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 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 קחו בחשבון שקובץ 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 צור חידון