Šioje pamokoje sužinosime, kaip pavyzdžių pagalba skaityti ir įrašyti į „Python“ CSV failus.
CSV (kableliais atskirtų reikšmių) formatas yra vienas iš paprasčiausių ir labiausiai paplitusių lentelių duomenų saugojimo būdų. Kad būtų pavaizduotas CSV failas, jis turi būti išsaugotas su .csv failo plėtiniu.
Paimkime pavyzdį:
Jei atidarysite anksčiau pateiktą CSV failą naudodami teksto rengyklę, pvz., Didingą tekstą, pamatysite:
SN, vardas, 1 miestas, Maiklas, Naujasis Džersis 2, Džekas, Kalifornija
Kaip matote, CSV failo elementai yra atskirti kableliais. Čia ,
yra ribotuvas.
Pagal savo poreikius galite atskirti bet kurį simbolį.
Pastaba: csv modulis taip pat gali būti naudojamas kitiems failų plėtiniams (pvz .: .txt ), jei jų turinys yra tinkamos struktūros.
Darbas su CSV failais „Python“
Nors integruotąją open()
funkciją galėtume naudoti dirbdami su CSV failais „Python“, yra specialus csv
modulis, kuris žymiai palengvina darbą su CSV failais.
Kad galėtume naudoti metodus csv
modulyje, pirmiausia turime importuoti modulį naudodami:
import csv
CSV failų skaitymas naudojant csv.reader ()
Norėdami skaityti CSV failą „Python“, galime naudoti šią csv.reader()
funkciją. Tarkime , kad dabartiniame kataloge turime csv
failą pavadinimu people.csv su šiais įrašais.
vardas | Amžius | Profesija |
Domkratas | 23 | Gydytoja |
Milleris | 22 | Inžinierius |
Perskaitykime šį failą naudodami csv.reader()
:
1 pavyzdys: perskaitykite CSV, turėdami kablelio ribotuvą
import csv with open('people.csv', 'r') as file: reader = csv.reader(file) for row in reader: print(row)
Rezultatas
(„Vardas“, „Amžius“, „Profesija“) („Džekas“, „23“, „Daktaras“) („Milleris“, „22“, „Inžinierius“)
Čia atidarėme failą people.csv skaitymo režimu naudodami:
with open('people.csv', 'r') as file:…
Norėdami sužinoti daugiau apie failų atidarymą „Python“, apsilankykite: „Python“ failų įvestis / išvestis
Tada csv.reader()
naudojamas failui nuskaityti, kuris grąžina kartojamą reader
objektą.
Tada reader
objektas kartojamas naudojant for
kilpą, kad būtų išspausdintas kiekvienos eilutės turinys.
Ankstesniame pavyzdyje csv.reader()
funkciją numatytuoju režimu naudojame CSV failams, turintiems kablelio ribotuvą.
Tačiau ši funkcija yra daug labiau pritaikoma.
Tarkime, kad mūsų CSV failas kaip skirtuką naudojo skirtuką . Norėdami skaityti tokius failus, galime perduoti pasirinktinius parametrus csv.reader()
funkcijai. Paimkime pavyzdį.
2 pavyzdys: skaitykite CSV failą, naudodamiesi skirtuko skirikliu
import csv with open('people.csv', 'r',) as file: reader = csv.reader(file, delimiter = ' ') for row in reader: print(row)
Atkreipkite dėmesį į pasirinktinį parametrą delimiter = ' '
aukščiau pateiktame pavyzdyje.
Visa csv.reader()
funkcijos sintaksė yra:
csv.reader(csvfile, dialect='excel', **optional_parameters)
Kaip matote iš sintaksės, mes taip pat galime perduoti tarmės parametrą csv.reader()
funkcijai. Šis dialect
parametras leidžia mums padaryti funkciją lankstesnę. Norėdami sužinoti daugiau, apsilankykite: CSV failų skaitymas „Python“.
CSV failų rašymas naudojant csv.writer ()
Norėdami parašyti į CSV failą „Python“, galime naudoti šią csv.writer()
funkciją.
csv.writer()
Funkcija grąžina writer
objektą, kuris paverčia vartotojo duomenis į apibrėžtoje eilutę. Šią eilutę vėliau galima naudoti norint įrašyti į CSV failus naudojant writerow()
funkciją. Paimkime pavyzdį.
3 pavyzdys: rašykite į CSV failą
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"))
Paleidus pirmiau nurodytą programą, sukuriamas pagrindinis failas „ protagonist.csv“ su tokiu turiniu:
SN, filmas, 1 veikėjas, „Žiedų valdovas“, Frodo Bagginsas 2, Haris Poteris, Haris Poteris
Pirmiau pateiktoje programoje atidarėme failą rašymo režimu.
Tada kiekvieną eilutę išlaikėme kaip sąrašą. Šie sąrašai konvertuojami į atribotą eilutę ir įrašomi į CSV failą.
4 pavyzdys: kelių eilučių rašymas rašytojo eilutėmis ()
Jei mums reikia parašyti dviejų matmenų sąrašo turinį į CSV failą, štai kaip tai padaryti.
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 tofieldnames
- alist
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")
Čia programa nuskaito people.csv iš dabartinio katalogo.
Norėdami rašyti į CSV failą, turime iškviesti „ to_csv()
DataFrame“ funkciją.
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')
Čia mes sukūrėme „DataFrame“ naudodami pd.DataFrame()
metodą. Tada to_csv()
iškviečiama šio objekto funkcija įrašyti į asmenį.csv .
Norėdami sužinoti daugiau, apsilankykite:
- „Python pandas.read_csv“ (oficiali svetainė)
- „Python pandas.pandas.DataFrame.to_csv“ (oficiali svetainė)