Python CSV: Διαβάστε και γράψτε αρχεία CSV

Σε αυτό το σεμινάριο, θα μάθουμε πώς να διαβάζουμε και να γράφουμε σε αρχεία CSV στο Python με τη βοήθεια παραδειγμάτων.

Η μορφή CSV (Comma Separated Values) είναι ένας από τους πιο απλούς και συνηθισμένους τρόπους αποθήκευσης δεδομένων πίνακα. Για να αντιπροσωπεύσετε ένα αρχείο CSV, πρέπει να αποθηκευτεί με την επέκταση αρχείου .csv .

Ας πάρουμε ένα παράδειγμα:

Εάν ανοίξετε το παραπάνω αρχείο CSV χρησιμοποιώντας ένα πρόγραμμα επεξεργασίας κειμένου, όπως υψηλό κείμενο, θα δείτε:

 SN, Name, City 1, Michael, New Jersey 2, Jack, Καλιφόρνια 

Όπως μπορείτε να δείτε, τα στοιχεία ενός αρχείου CSV διαχωρίζονται με κόμματα. Εδώ, ,είναι οριοθέτης.

Μπορείτε να έχετε έναν μόνο χαρακτήρα ως οριοθέτη σύμφωνα με τις ανάγκες σας.

Σημείωση: Η μονάδα csv μπορεί επίσης να χρησιμοποιηθεί για άλλες επεκτάσεις αρχείων (όπως: .txt ) εφόσον το περιεχόμενό τους είναι σε σωστή δομή.

Εργασία με αρχεία CSV στο Python

Ενώ θα μπορούσαμε να χρησιμοποιήσουμε την ενσωματωμένη open()λειτουργία για να εργαζόμαστε με αρχεία CSV στο Python, υπάρχει μια ειδική csvλειτουργική μονάδα που καθιστά την εργασία με αρχεία CSV πολύ πιο εύκολη.

Προτού μπορέσουμε να χρησιμοποιήσουμε τις μεθόδους στο csvmodule, πρέπει πρώτα να εισαγάγουμε το module χρησιμοποιώντας:

 import csv 

Ανάγνωση αρχείων CSV Χρήση του csv.reader ()

Για να διαβάσετε ένα αρχείο CSV στο Python, μπορούμε να χρησιμοποιήσουμε τη csv.reader()συνάρτηση. Ας υποθέσουμε ότι έχουμε ένα csvαρχείο με το όνομα People.csv στον τρέχοντα κατάλογο με τις ακόλουθες καταχωρίσεις.

Ονομα Ηλικία Επάγγελμα
Γρύλος 23 Γιατρός
Μυλωνάς 22 Μηχανικός

Ας διαβάσουμε αυτό το αρχείο χρησιμοποιώντας csv.reader():

Παράδειγμα 1: Διαβάστε το CSV έχοντας Comma Delimiter

 import csv with open('people.csv', 'r') as file: reader = csv.reader(file) for row in reader: print(row) 

Παραγωγή

 ('Όνομα', 'Ηλικία', 'Επάγγελμα') ('Jack', '23', 'Doctor') ('Miller', '22', 'Engineer') 

Εδώ, ανοίξαμε το αρχείο People.csv σε λειτουργία ανάγνωσης χρησιμοποιώντας:

 with open('people.csv', 'r') as file:… 

Για να μάθετε περισσότερα σχετικά με το άνοιγμα αρχείων στο Python, επισκεφθείτε: Python File Input / Output

Στη συνέχεια, το csv.reader()χρησιμοποιείται για την ανάγνωση του αρχείου, το οποίο επιστρέφει ένα επαναλαμβανόμενο readerαντικείμενο.

Το readerαντικείμενο στη συνέχεια επαναλαμβάνεται χρησιμοποιώντας έναν forβρόχο για να εκτυπώσετε τα περιεχόμενα κάθε σειράς.

Στο παραπάνω παράδειγμα, χρησιμοποιούμε τη csv.reader()λειτουργία σε προεπιλεγμένη λειτουργία για αρχεία CSV με διαχωριστικό κόμμα.

Ωστόσο, η λειτουργία είναι πολύ πιο προσαρμόσιμη.

Ας υποθέσουμε ότι το αρχείο CSV χρησιμοποιούσε την καρτέλα ως οριοθέτη. Για να διαβάσετε τέτοια αρχεία, μπορούμε να περάσουμε προαιρετικές παραμέτρους στη csv.reader()λειτουργία. Ας πάρουμε ένα παράδειγμα.

Παράδειγμα 2: Διαβάστε το αρχείο CSV με διαχωριστικό καρτελών

 import csv with open('people.csv', 'r',) as file: reader = csv.reader(file, delimiter = ' ') for row in reader: print(row) 

Παρατηρήστε την προαιρετική παράμετρο delimiter = ' 'στο παραπάνω παράδειγμα.

Η πλήρης σύνταξη της csv.reader()συνάρτησης είναι:

 csv.reader(csvfile, dialect='excel', **optional_parameters) 

Όπως μπορείτε να δείτε από τη σύνταξη, μπορούμε επίσης να περάσουμε την παράμετρο διαλέκτου στη csv.reader()συνάρτηση. Η dialectπαράμετρος μας επιτρέπει να κάνουμε τη λειτουργία πιο ευέλικτη. Για να μάθετε περισσότερα, επισκεφθείτε: Ανάγνωση αρχείων CSV στο Python.

Σύνταξη αρχείων CSV με χρήση του csv.writer ()

Για να γράψουμε σε ένα αρχείο CSV στο Python, μπορούμε να χρησιμοποιήσουμε τη csv.writer()συνάρτηση.

Η csv.writer()συνάρτηση επιστρέφει ένα writerαντικείμενο που μετατρέπει τα δεδομένα του χρήστη σε μια οριοθετημένη συμβολοσειρά. Αυτή η συμβολοσειρά μπορεί αργότερα να χρησιμοποιηθεί για εγγραφή σε αρχεία CSV χρησιμοποιώντας τη writerow()συνάρτηση. Ας πάρουμε ένα παράδειγμα.

Παράδειγμα 3: Γράψτε σε ένα αρχείο CSV

 import csv with open('protagonist.csv', 'w', newline='') as file: writer = csv.writer(file) writer.writerow(("SN", "Movie", "Protagonist")) writer.writerow((1, "Lord of the Rings", "Frodo Baggins")) writer.writerow((2, "Harry Potter", "Harry Potter")) 

Όταν εκτελούμε το παραπάνω πρόγραμμα, δημιουργείται ένα αρχείο protagonist.csv με το ακόλουθο περιεχόμενο:

 SN, Movie, Protagonist 1, Lord of the Rings, Frodo Baggins 2, Χάρι Πότερ, Χάρι Πότερ 

Στο παραπάνω πρόγραμμα, έχουμε ανοίξει το αρχείο σε λειτουργία γραφής.

Στη συνέχεια, περάσαμε κάθε σειρά ως λίστα. Αυτές οι λίστες μετατρέπονται σε οριοθετημένη συμβολοσειρά και γράφονται στο αρχείο CSV.

Παράδειγμα 4: Σύνταξη πολλαπλών σειρών με συγγραφείς ()

Εάν πρέπει να γράψουμε τα περιεχόμενα της δισδιάστατης λίστας σε ένα αρχείο CSV, δείτε πώς μπορούμε να το κάνουμε.

 import csv csv_rowlist = (("SN", "Movie", "Protagonist"), (1, "Lord of the Rings", "Frodo Baggins"), (2, "Harry Potter", "Harry Potter")) with open('protagonist.csv', 'w') as file: writer = csv.writer(file) writer.writerows(csv_rowlist) 

Η έξοδος του προγράμματος είναι η ίδια όπως στο Παράδειγμα 3 .

Εδώ, η δισδιάστατη λίστα μας μεταφέρεται στη writer.writerows()μέθοδο για την εγγραφή του περιεχομένου της λίστας στο αρχείο CSV.

Παράδειγμα 5: Σύνταξη σε αρχείο CSV με Tab Delimiter

 import csv with open('protagonist.csv', 'w') as file: writer = csv.writer(file, delimiter = ' ') writer.writerow(("SN", "Movie", "Protagonist")) writer.writerow((1, "Lord of the Rings", "Frodo Baggins")) writer.writerow((2, "Harry Potter", "Harry Potter")) 

Παρατηρήστε την προαιρετική παράμετρο delimiter = ' 'στη csv.writer()συνάρτηση.

Η πλήρης σύνταξη της csv.writer()συνάρτησης είναι:

 csv.writer(csvfile, dialect='excel', **optional_parameters) 

Παρόμοια με csv.reader(), μπορείτε επίσης να περάσετε την παράμετρο διαλέκτου τη csv.writer()λειτουργία για να κάνετε τη λειτουργία πολύ πιο προσαρμόσιμη. Για να μάθετε περισσότερα, επισκεφθείτε: Σύνταξη αρχείων CSV στο Python

Κατηγορία Python csv.DictReader ()

Τα αντικείμενα μιας csv.DictReader()κλάσης μπορούν να χρησιμοποιηθούν για την ανάγνωση ενός αρχείου CSV ως λεξικό.

Παράδειγμα 6: Python csv.DictReader ()

Ας υποθέσουμε ότι έχουμε το ίδιο αρχείο people.csv με το Παράδειγμα 1 .

Ονομα Ηλικία Επάγγελμα
Γρύλος 23 Γιατρός
Μυλωνάς 22 Μηχανικός

Ας δούμε πώς csv.DictReader()μπορεί να χρησιμοποιηθεί.

 import csv with open("people.csv", 'r') as file: csv_file = csv.DictReader(file) for row in csv_file: print(dict(row)) 

Παραγωγή

 ('Όνομα': 'Jack', 'Age': '23', 'Profession': 'Doctor') ('Όνομα': 'Miller', 'Age': '22', 'Profession': 'Engineer') 

Όπως μπορούμε να δούμε, οι καταχωρήσεις της πρώτης σειράς είναι τα πλήκτρα λεξικού. Και, οι καταχωρήσεις στις άλλες σειρές είναι οι τιμές του λεξικού.

Εδώ, το csv_file είναι ένα csv.DictReader()αντικείμενο. Το αντικείμενο μπορεί να επαναληφθεί χρησιμοποιώντας έναν forβρόχο. Ο csv.DictReader()επέστρεψε ένα OrderedDictείδος για κάθε σειρά. Γι 'αυτό συνηθίζαμε dict()να μετατρέπουμε κάθε σειρά σε λεξικό.

Σημειώστε ότι, έχουμε χρησιμοποιήσει ρητά τη μέθοδο υπαγόρευσης () για τη δημιουργία λεξικών στο forβρόχο.

 print(dict(row)) 

Σημείωση : Ξεκινώντας από το Python 3.8, το csv.DictReader () επιστρέφει ένα λεξικό για κάθε σειρά και δεν χρειάζεται να το χρησιμοποιήσουμε dict()ρητά.

Η πλήρης σύνταξη της csv.DictReader()τάξης είναι:

 csv.DictReader(file, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds) 

Για να μάθετε περισσότερα σχετικά με αυτό, επισκεφθείτε την τάξη: Python csv.DictReader ()

Κατηγορία Python csv.DictWriter ()

Τα αντικείμενα της csv.DictWriter()κλάσης μπορούν να χρησιμοποιηθούν για την εγγραφή σε ένα αρχείο CSV από ένα λεξικό Python.

Η ελάχιστη σύνταξη της csv.DictWriter()τάξης είναι:

 csv.DictWriter(file, fieldnames) 

Εδώ,

  • file - Αρχείο CSV στο οποίο θέλουμε να γράψουμε
  • fieldnames- ένα listαντικείμενο που πρέπει να περιέχει τις κεφαλίδες στηλών που καθορίζουν τη σειρά με την οποία τα δεδομένα θα πρέπει να γραφτούν στο αρχείο CSV

Παράδειγμα 7: Python csv.DictWriter ()

 import csv with open('players.csv', 'w', newline='') as file: fieldnames = ('player_name', 'fide_rating') writer = csv.DictWriter(file, fieldnames=fieldnames) writer.writeheader() writer.writerow(('player_name': 'Magnus Carlsen', 'fide_rating': 2870)) writer.writerow(('player_name': 'Fabiano Caruana', 'fide_rating': 2822)) writer.writerow(('player_name': 'Ding Liren', 'fide_rating': 2801)) 

The program creates a players.csv file with the following entries:

 player_name,fide_rating Magnus Carlsen,2870 Fabiano Caruana,2822 Ding Liren,2801 

The full syntax of the csv.DictWriter() class is:

 csv.DictWriter(f, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds) 

To learn more about it in detail, visit: Python csv.DictWriter() class

Using the Pandas library to Handle CSV files

Pandas is a popular data science library in Python for data manipulation and analysis. If we are working with huge chunks of data, it's better to use pandas to handle CSV files for ease and efficiency.

Before we can use pandas, we need to install it. To learn more, visit: How to install Pandas?

Once we install it, we can import Pandas as:

 import pandas as pd 

To read the CSV file using pandas, we can use the read_csv() function.

 import pandas as pd pd.read_csv("people.csv") 

Εδώ, το πρόγραμμα διαβάζει το People.csv από τον τρέχοντα κατάλογο.

Για να γράψουμε σε ένα αρχείο CSV, πρέπει να καλέσουμε τη to_csv()συνάρτηση ενός DataFrame.

 import pandas as pd # creating a data frame df = pd.DataFrame((('Jack', 24), ('Rose', 22)), columns = ('Name', 'Age')) # writing data frame to a CSV file df.to_csv('person.csv') 

Εδώ, δημιουργήσαμε ένα DataFrame χρησιμοποιώντας τη pd.DataFrame()μέθοδο. Στη συνέχεια, to_csv()καλείται η συνάρτηση για αυτό το αντικείμενο, για εγγραφή στο person.csv .

Για να μάθετε περισσότερα, επισκεφθείτε:

  • Python pandas.read_csv (επίσημος ιστότοπος)
  • Python pandas.pandas.DataFrame.to_csv (επίσημος ιστότοπος)

ενδιαφέροντα άρθρα...