Python CSV: Lue ja kirjoita CSV-tiedostoja

Tässä opetusohjelmassa opitaan kuinka lukea ja kirjoittaa CSV-tiedostoihin Pythonissa esimerkkien avulla.

CSV (Comma Separated Values) -formaatti on yksi yksinkertaisimmista ja yleisimmistä tavoista tallentaa taulukkotietoja. CSV-tiedoston edustamiseksi se on tallennettava .csv- tiedostotunnisteella.

Otetaan esimerkki:

Jos avaat yllä olevan CSV-tiedoston tekstieditorilla, kuten ylevällä tekstillä, näet:

 SN, nimi, kaupunki 1, Michael, New Jersey 2, Jack, Kalifornia 

Kuten näette, CSV-tiedoston elementit erotetaan pilkuilla. Tässä ,on erotin.

Sinulla voi olla mikä tahansa yksittäinen merkki erottajana tarpeidesi mukaan.

Huomaa: csv-moduulia voidaan käyttää myös muille tiedostotunnisteille (kuten: .txt ), kunhan niiden sisältö on asianmukaisessa rakenteessa.

CSV-tiedostojen käsittely Pythonissa

Vaikka voisimme käyttää sisäänrakennettua open()toimintoa työskennellessäni CSV-tiedostojen kanssa Pythonissa, on oma csvmoduuli, joka helpottaa CSV-tiedostojen käsittelyä.

Ennen kuin voimme käyttää menetelmiä csvmoduuliin, meidän on tuotava moduuli ensin käyttämällä:

 import csv 

CSV-tiedostojen lukeminen csv.reader () -ohjelmalla

CSV-tiedoston lukemiseen Pythonissa voimme käyttää csv.reader()toimintoa. Oletetaan , että nykyisessä hakemistossa on csvtiedosto nimeltä people.csv ja seuraavat merkinnät.

Nimi Ikä Ammatti
Jack 23 Lääkäri
Miller 22 Insinööri

Luetaan tämä tiedosto seuraavilla tavoilla csv.reader():

Esimerkki 1: Lue CSV, jossa on pilkun erotin

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

Tuotos

 ('Nimi', 'Ikä', 'Ammatti') ('Jack', '23', 'Lääkäri') ('Miller', '22', 'Insinööri') 

Tässä olemme avanneet people.csv- tiedoston lukutilassa käyttämällä:

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

Lisätietoja tiedostojen avaamisesta Pythonissa on osoitteessa Python File Input / Output

Sitten sitä csv.reader()käytetään tiedoston lukemiseen, joka palauttaa iteroitavan readerobjektin.

readerObjekti sitten iteroidaan käyttäen forsilmukan tulostaa sisällön kunkin rivin.

Yllä olevassa esimerkissä käytämme csv.reader()toimintoa oletustilassa CSV-tiedostoille, joissa on pilkun erotin.

Toiminto on kuitenkin paljon muokattavissa.

Oletetaan, että CSV-tiedostomme käytti välilehteä erottimena. Tällaisten tiedostojen lukemiseksi voimme välittää toiminnolle valinnaiset parametrit csv.reader(). Otetaan esimerkki.

Esimerkki 2: Lue CSV-tiedosto, jossa on välilehden erotin

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

Huomaa valinnainen parametri delimiter = ' 'yllä olevassa esimerkissä.

csv.reader()Funktion täydellinen syntaksi on:

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

Kuten syntaksista näet, voimme myös välittää murre-parametrin csv.reader()funktiolle. dialectParametri antaa meille mahdollisuuden tehdä toiminnon joustavampi. Lisätietoja on osoitteessa: CSV-tiedostojen lukeminen Pythonissa.

CSV-tiedostojen kirjoittaminen csv.writer () -sovelluksen avulla

Jos haluat kirjoittaa CSV-tiedostoon Pythonissa, voimme käyttää csv.writer()toimintoa.

csv.writer()Funktio palauttaa writerobjektin, joka muuntaa käyttäjän datan rajatulla merkkijono. Tätä merkkijonoa voidaan myöhemmin käyttää CSV-tiedostoihin kirjoittamiseen writerow()toiminnon avulla. Otetaan esimerkki.

Esimerkki 3: Kirjoita CSV-tiedostoon

 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")) 

Kun suoritamme yllä olevan ohjelman, luodaan protagonist.csv- tiedosto, jonka sisältö on seuraava:

 SN, Elokuva, Päähenkilö 1, Sormusten herra, Frodo Baggins 2, Harry Potter, Harry Potter 

Edellä olevassa ohjelmassa olemme avanneet tiedoston kirjoitustilassa.

Sitten olemme välittäneet jokaisen rivin luettelona. Nämä luettelot muunnetaan erotetuksi merkkijonoksi ja kirjoitetaan CSV-tiedostoon.

Esimerkki 4: Useiden rivien kirjoittaminen kirjainriveillä ()

Jos meidän on kirjoitettava 2-ulotteisen luettelon sisältö CSV-tiedostoon, voimme tehdä sen seuraavasti.

 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) 

The output of the program is the same as in Example 3.

Here, our 2-dimensional list is passed to the writer.writerows() method to write the content of the list to the CSV file.

Example 5: Writing to a CSV File with 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")) 

Notice the optional parameter delimiter = ' ' in the csv.writer() function.

The complete syntax of the csv.writer() function is:

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

Similar to csv.reader(), you can also pass dialect parameter the csv.writer() function to make the function much more customizable. To learn more, visit: Writing CSV files in Python

Python csv.DictReader() Class

The objects of a csv.DictReader() class can be used to read a CSV file as a dictionary.

Example 6: Python csv.DictReader()

Suppose we have the same file people.csv as in Example 1.

Name Age Profession
Jack 23 Doctor
Miller 22 Engineer

Let's see how csv.DictReader() can be used.

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

Output

 ('Name': 'Jack', ' Age': ' 23', ' Profession': ' Doctor') ('Name': 'Miller', ' Age': ' 22', ' Profession': ' Engineer') 

As we can see, the entries of the first row are the dictionary keys. And, the entries in the other rows are the dictionary values.

Here, csv_file is a csv.DictReader() object. The object can be iterated over using a for loop. The csv.DictReader() returned an OrderedDict type for each row. That's why we used dict() to convert each row to a dictionary.

Notice that, we have explicitly used the dict() method to create dictionaries inside the for loop.

 print(dict(row)) 

Note: Starting from Python 3.8, csv.DictReader() returns a dictionary for each row, and we do not need to use dict() explicitly.

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

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

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

Python csv.DictWriter() Class

The objects of csv.DictWriter() class can be used to write to a CSV file from a Python dictionary.

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

 csv.DictWriter(file, fieldnames) 

Here,

  • file - CSV file where we want to write to
  • fieldnames - a list object which should contain the column headers specifying the order in which data should be written in the CSV file

Example 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") 

Täällä ohjelma lukee people.csv nykyisestä hakemistosta.

CSV-tiedostoon kirjoittamiseksi meidän on kutsuttava to_csv()DataFrame-funktio.

 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') 

Tässä olemme luoneet DataFrame- pd.DataFrame()menetelmän menetelmällä. Tämän jälkeen to_csv()kutsutaan tämän objektin funktio kirjoittaa person.csv-tiedostoon .

Lisätietoja on osoitteessa

  • Python pandas.read_csv (virallinen sivusto)
  • Python pandas.pandas.DataFrame.to_csv (virallinen sivusto)

Mielenkiintoisia artikkeleita...