CSV-fájlok használata Pythonban
A CSV (vesszővel tagolt értékek) fájl egy egyszerű szöveges fájl, amelyben minden sor egy adatrekordot jelöl, és az egyes rekordokon belüli mezők vesszővel vannak elválasztva. Egyszerűsége és olvashatósága miatt gyakran használják táblázatokhoz és adatbázisokhoz.
Az alábbiakban felsorolunk néhány műveletet, amelyeket Python CSV-fájlokkal való munka közben hajtunk végre
CSV-fájl olvasása
A CSV-fájl olvasása az olvasó objektum használatával történik. A CSV-fájl szövegfájlként nyílik meg a Python beépített open() függvényével, amely egy fájlobjektumot ad vissza. Ebben a példában először megnyitjuk a CSV-fájlt OLVASÁS módban. A kód és a részletes magyarázat alább található.
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 ' )
Kimenet
A fenti példa CSV-fájlt használ aapl.csv amelyről letölthető itt .
Magyarázat:
- nyitott (...) biztonságosan megnyitja a CSV-fájlt olvasási módban egy környezetkezelő segítségével.
- csv.reader(csvfile) a fájlt CSV-olvasó objektummá alakítja.
- következő(csvreader) kibontja az első sort oszlopfejlécként.
- Hurok át csvreader az egyes sorok (listaként) sorokhoz fűzéséhez.
- Nyomtassa ki az összes sor fejlécét és az első 5 adatsort formázott nézetben.
CSV-fájlok olvasása szótárba csv-vel
CSV-fájlt a Python csv-moduljával és a csv.DictReader osztályával tudunk szótárba olvasni. Íme egy példa:
Tegyük fel, hogy van egy alkalmazottak.csv a fájl és a benne lévő tartalom a következő lesz:
névosztályszületésnap_hónap
John SmithHRJúlius
Alice JohnsonITOoktóber
Bob Williams Pénzügy január
Példa: Ez minden sort szótárként olvas be (a fejléceket kulcsként), majd hozzáfűzi a listához.
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 )
Kimenet:
{'name': 'John Smith' 'részleg': 'HR' 'birthday_month': 'Július'}
{'name': 'Alice Johnson' 'részleg': 'IT' 'birthday_month': 'October'}
{'name': 'Bob Williams' 'részleg': 'Pénzügy' 'birthday_month': 'január'}
Magyarázat:
- nyitott (...) megnyitja a fájlt egy környezetkezelővel.
- csv.DictReader(fájl) minden sort szótárként olvas, fejléceket használva kulcsként.
- data_list.append(row) minden szótárat egy listában tárol.
Írás CSV-fájlba
CSV-fájlba íráshoz először ÍRÁS módban nyissuk meg a CSV-fájlt. A fájlobjektum csv.writer objektummá konvertálódik, és további műveletek zajlanak. A kód és a részletes magyarázat alább található.
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
Magyarázat:
- mezőket meghatározza az oszlopfejléceket, a sorok pedig listákként tartalmazzák az adatokat.
- -vel nyitott (... 'w') írási módban nyitja meg a fájlt egy környezetkezelő segítségével.
- csv.writer(csvfile) létrehoz egy író objektumot a CSV-be íráshoz.
- írássor(mezők) beírja a fejléc sort a fájlba.
- írássorok (sorok) az összes adatsort egyszerre írja a CSV-be.
Szótár írása CSV-fájlba
Szótár CSV-fájlba írásához a fájlobjektumot (csvfile) a rendszer DictWriter objektummá alakítja. A részletes példa magyarázattal és kóddal alább található.
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 )
Kimenet
csv fájl Tegyük fel, hogy egy CSV-fájl egyszerű szövegben így néz ki:
egyetemi rekord Magyarázat:
- nyitott (...) biztonságosan megnyitja a fájlt egy környezetkezelő segítségével.
- csv.DictWriter(... ) leképezi a szótár kulcsait CSV oszlopokra.
- írásfejléc() oszlopfejléceket ír.
- írások (mydict) minden szótárat CSV-sorként ír.
CSV-fájlok olvasása Pandákkal
Olvashatunk a Python CSV fájlokat a Pandákkal pandas.read_csv() funkció. Íme egy példa:
Tegyük fel, hogy van dolgozók.csv fájlunk, és a benne lévő tartalom a következő lesz:
névosztályszületésnap_hónap
John SmithHRJúlius
Alice JohnsonITOoktóber
Bob Williams Pénzügy január
Ebben a példában a pd.read_csv() beolvassa a CSV-fájlt egy Pandas DataFrame-be. Az így kapott DataFrame különféle adatkezelési és -elemzési feladatokhoz használható.
Python import pandas as pd # Read the CSV file into a DataFrame df = pd . read_csv ( 'employees.csv' ) # Display the DataFrame print ( df )
Kimenet:
név osztály születésnap_hónap
0 John Smith HR július
1 Alice Johnson IT október
2 Bob Williams Pénzügy január
A pandas DataFrame funkció segítségével elérhetjük az egyes oszlopok szűrési adatait, és különféle műveleteket hajthatunk végre. Például, ha el akarjuk érni a 'név' oszlopot, használhatjuk a df['name'] parancsot.
Python # Access the 'name' column names = df [ 'name' ] print ( names )
Kimenet :
0 Kovács János
1 Alice Johnson
2 Bob Williams
Név: név dtype: objektum
CSV-fájlok írása Pandákkal
A Pandas segítségével CSV-fájlokat írhatunk. Használatával meg lehet tenni pd.DataFrame() funkció. Ebben a példában a Pandák A könyvtár a szótárak listájának (mydict) átalakítására szolgál táblázatos adatokat reprezentáló DataFrame-mé. A DataFrame ezután egy „output.csv” nevű Python CSV-fájlba kerül a to_csv metódussal, így strukturált és olvasható adatfájl jön létre további elemzéshez vagy megosztáshoz.
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 )
Kimeneti CSV-fájl:
ágcgpannameyear
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Prateek3
EP9.1Sahil2
E-mailek tárolása CSV-fájlokban
Kezdjük a csv modul importálásával, és arra használjuk, hogy neveket és e-maileket vesszővel elválasztott értékekként tároljunk. Az open() függvénnyel létrehozunk egy CSV fájlt, majd minden sort írunk egy író objektum segítségével, külön oszlopokkal a nevek és e-mail címek számára.
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 )
Kimenet:
E-mailek csv-ben Kvíz létrehozása