Työskentely csv-tiedostojen kanssa Pythonissa
A CSV (Comma Separated Values) -tiedosto on pelkkä tekstitiedosto, jossa jokainen rivi edustaa tietotietuetta ja jokaisen tietueen kentät on erotettu pilkuilla. Sitä käytetään yleisesti laskentataulukoissa ja tietokantoissa sen yksinkertaisuuden ja luettavuuden vuoksi.
Alla on joitain toimintoja, joita suoritamme työskennellessämme Python CSV -tiedostojen kanssa Pythonissa
CSV-tiedoston lukeminen
CSV-tiedostosta lukeminen tapahtuu lukuobjektin avulla. CSV-tiedosto avataan tekstitiedostona Pythonin sisäänrakennetulla open()-funktiolla, joka palauttaa tiedostoobjektin. Tässä esimerkissä avataan ensin CSV-tiedosto READ-tilassa tiedostoobjekti muunnetaan csv.reader-objektiksi ja suoritetaan jatkotoimenpiteitä. Koodi ja yksityiskohtainen selitys annetaan alla.
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 ' )
Lähtö
Yllä oleva esimerkki käyttää CSV-tiedostoa aapl.csv josta voi ladata tässä .
Selitys:
- auki (...) avaa CSV-tiedoston lukutilassa turvallisesti kontekstinhallinnan avulla.
- csv.reader(csvfile) muuttaa tiedoston CSV-lukijaobjektiksi.
- seuraava (csvreader) poimii ensimmäisen rivin sarakeotsikoiksi.
- Kierrä läpi csv-lukija liittääksesi jokaisen rivin (luettelona) riveihin.
- Tulosta kokonaisrivien otsikot ja ensimmäiset 5 tietoriviä muotoillussa näkymässä.
CSV-tiedostojen lukeminen sanakirjaksi csv:llä
Pythonin csv-moduulin ja csv.DictReader-luokan avulla voimme lukea CSV-tiedoston sanakirjaan. Tässä on esimerkki:
Oletetaan, että meillä on a työntekijät.csv tiedosto ja sen sisällä oleva sisältö ovat:
nimiosastosyntymäpäivä_kuukausi
John SmithHRheinäkuu
Alice JohnsonITOlokakuu
Bob WilliamsFinance tammikuussa
Esimerkki: Tämä lukee jokaisen rivin sanakirjana (otsikot avaimina) ja lisää sen sitten luetteloon.
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 )
Lähtö:
{'name': 'John Smith' 'osasto': 'HR' 'birthday_month': 'Heinäkuu'}
{'name': 'Alice Johnson' 'osasto': 'IT' 'birthday_month': 'October'}
{'name': 'Bob Williams' 'osasto': 'Rahoitus' 'birthday_month': 'Tammikuu'}
Selitys:
- auki (...) avaa tiedoston kontekstinhallinnan avulla.
- csv.DictReader(tiedosto) lukee jokaisen rivin sanakirjana käyttämällä otsikoita avaimina.
- data_list.append(row) tallentaa jokaisen sanakirjan luetteloon.
Kirjoitetaan CSV-tiedostoon
Kirjoittaaksesi CSV-tiedostoon avaamme ensin CSV-tiedoston WRITE-tilassa. Tiedostoobjekti muunnetaan csv.writer-objektiksi ja tehdään lisätoimintoja. Koodi ja yksityiskohtainen selitys annetaan alla.
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
Selitys:
- kentät määrittää sarakeotsikot ja rivit sisältävät tiedot luetteloina.
- kanssa auki (... 'w') avaa tiedoston kirjoitustilassa kontekstinhallinnan avulla.
- csv.writer(csv-tiedosto) luo kirjoitusobjektin CSV-tiedostoon kirjoittamista varten.
- kirjoitusrivi(kentät) kirjoittaa otsikkorivin tiedostoon.
- kirjoitusrivit (rivit) kirjoittaa kaikki tietorivit CSV-tiedostoon kerralla.
Sanakirjan kirjoittaminen CSV-tiedostoon
Sanakirjan kirjoittamiseksi CSV-tiedostoon tiedostoobjekti (csvfile) muunnetaan DictWriter-objektiksi. Yksityiskohtainen esimerkki selityksineen ja koodiineen annetaan alla.
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 )
Lähtö
csv-tiedosto Oletetaan, että CSV-tiedosto näyttää tältä pelkkänä tekstinä:
yliopiston ennätys Selitys:
- auki (...) avaa tiedoston turvallisesti kontekstinhallinnan avulla.
- csv.DictWriter(... ) yhdistää sanakirjan avaimet CSV-sarakkeisiin.
- kirjoitusotsikko() kirjoittaa sarakkeiden otsikot.
- kirjoitukset (mydict) kirjoittaa kaikki sanakirjat CSV-riveinä.
CSV-tiedostojen lukeminen Pandoilla
Voimme lukea a Python CSV tiedostot Pandalla käyttäen pandas.read_csv() toiminto. Tässä on esimerkki:
Oletetaan, että meillä on työntekijät.csv-tiedosto ja sen sisältämä sisältö on:
nimiosastosyntymäpäivä_kuukausi
John SmithHRheinäkuu
Alice JohnsonITOlokakuu
Bob WilliamsFinance tammikuussa
Tässä esimerkissä pd.read_csv() lukee CSV-tiedoston Pandas DataFrame -kehykseen. Tuloksena olevaa DataFramea voidaan käyttää erilaisiin tietojen käsittely- ja analysointitehtäviin.
Python import pandas as pd # Read the CSV file into a DataFrame df = pd . read_csv ( 'employees.csv' ) # Display the DataFrame print ( df )
Lähtö:
nimi osasto syntymäpäivä_kuukausi
0 John Smith HR heinäkuu
1 Alice Johnson IT lokakuu
2 Bob Williams Finance tammikuuta
Voimme käyttää tiettyjä sarakkeiden suodatustietoja ja suorittaa erilaisia toimintoja käyttämällä panda DataFrame -toimintoa. Jos esimerkiksi haluamme päästä 'nimi'-sarakkeeseen, voimme käyttää df['nimi'].
Python # Access the 'name' column names = df [ 'name' ] print ( names )
Lähtö :
0 John Smith
1 Alice Johnson
2 Bob Williams
Nimi: nimi dtype: objekti
CSV-tiedostojen kirjoittaminen Pandan kanssa
Voimme käyttää Pandaja CSV-tiedostojen kirjoittamiseen. Se voidaan tehdä käyttämällä pd.DataFrame() toiminto. Tässä esimerkissä Pandat kirjastoa käytetään sanakirjojen luettelon (mydict) muuntamiseen DataFrame-kehykseksi, joka edustaa taulukkotietoja. DataFrame kirjoitetaan sitten Python CSV -tiedostoon nimeltä "output.csv" käyttämällä to_csv-menetelmää, jolloin luodaan jäsennelty ja luettava tietotiedosto jatkoanalyysiä tai jakamista varten.
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 )
Tulosta CSV-tiedosto:
haaracgpanimivuosi
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Prateek3
EP9.1Sahil2
Sähköpostien tallentaminen CSV-tiedostoihin
Aloitamme tuomalla csv-moduulin ja tallennamme siihen nimet ja sähköpostit pilkuilla erotettuina arvoina. Luomme open()-funktion avulla CSV-tiedoston ja kirjoitamme sitten jokaisen rivin käyttämällä kirjoitusobjektia, jossa on erilliset sarakkeet nimille ja sähköpostiosoitteille.
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 )
Lähtö:
Sähköpostit csv-muodossa Luo tietokilpailu