Práce se soubory csv v Pythonu
A CSV (Comma Separated Values). je soubor ve formátu prostého textu, kde každý řádek představuje datový záznam a pole v každém záznamu jsou oddělena čárkami. Pro svou jednoduchost a čitelnost se běžně používá pro tabulky a databáze.
Níže jsou uvedeny některé operace, které provádíme při práci se soubory Python CSV v Pythonu
Čtení souboru CSV
Čtení ze souboru CSV se provádí pomocí objektu reader. Soubor CSV se otevře jako textový soubor pomocí vestavěné funkce open() Pythonu, která vrací objekt souboru. V tomto příkladu nejprve otevřeme soubor CSV v režimu READ objekt souboru se převede na objekt csv.reader a probíhá další operace. Kód a podrobné vysvětlení je uvedeno níže.
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 ' )
Výstup
Výše uvedený příklad používá soubor CSV aapl.csv ze kterého lze stáhnout zde .
Vysvětlení:
- s otevřeným (...) otevře soubor CSV v režimu čtení bezpečně pomocí kontextového správce.
- csv.reader(csvfile)
- další (csvreader) extrahuje první řádek jako záhlaví sloupců.
- Projděte csvreader pro připojení každého řádku (jako seznamu) k řádkům.
- Vytiskněte záhlaví celkových řádků a prvních 5 datových řádků ve formátovaném zobrazení.
Čtení souborů CSV do slovníku s csv
Soubor CSV můžeme načíst do slovníku pomocí modulu csv v Pythonu a třídy csv.DictReader. Zde je příklad:
Předpokládejme, že máme a zaměstnanci.csv soubor a obsah v něm bude:
pojmenované odděleníbirthday_month
John SmithHRčervenec
Alice JohnsonITOříjen
Bob Williams Finance leden
Příklad: Tím se každý řádek přečte jako slovník (záhlaví jako klíče) a poté se připojí k seznamu .
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 )
výstup:
{'name': 'John Smith' 'department': 'HR' 'birthday_month': 'červenec'}
{'name': 'Alice Johnson' 'department': 'IT' 'birthday_month': 'October'}
{'name': 'Bob Williams' 'department': 'Finance' 'birthday_month': 'Leden'}
Vysvětlení:
- s otevřeným (...) otevře soubor pomocí kontextového správce.
- csv.DictReader(soubor) přečte každý řádek jako slovník pomocí záhlaví jako klíče.
- data_list.append(řádek) ukládá každý slovník do seznamu.
Zápis do souboru CSV
Chcete-li zapisovat do souboru CSV, nejprve soubor CSV otevřete v režimu WRITE. Objekt file se převede na objekt csv.writer a proběhnou další operace. Kód a podrobné vysvětlení je uvedeno níže.
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
Vysvětlení:
- pole definuje záhlaví sloupců a řádky obsahuje data jako seznam seznamů.
- s otevřít (... 'w') otevře soubor v režimu zápisu pomocí kontextového správce.
- csv.writer(csvfile) vytvoří objekt Writer pro zápis do CSV.
- writerow (pole) zapíše řádek záhlaví do souboru.
- spisovatelé (řádky) zapíše všechny datové řádky do CSV najednou.
Chcete-li zapsat slovník do souboru CSV, objekt souboru (csvfile) se převede na objekt DictWriter. Podrobný příklad s vysvětlením a kódem je uveden níže.
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 )
Výstup
csv soubor Zvažte, že soubor CSV vypadá v prostém textu takto:
univerzitní rekord Vysvětlení:
- s otevřeným (...) otevře soubor bezpečně pomocí kontextového správce.
- csv.DictWriter(... ) mapuje klíče slovníku na sloupce CSV.
- writeheader() zapisuje záhlaví sloupců.
- spisovatelé (mydict) zapíše všechny slovníky jako řádky CSV.
Čtení souborů CSV pomocí pand
Můžeme číst a Python CSV soubory pomocí Pandas pandas.read_csv() funkce. Zde je příklad:
Předpokládejme, že máme soubor staff.csv a obsah v něm bude:
pojmenované odděleníbirthday_month
John SmithHRčervenec
Alice JohnsonITOříjen
Bob Williams Finance leden
V tomto příkladu pd.read_csv() načte soubor CSV do Pandas DataFrame. Výsledný DataFrame lze použít pro různé úlohy manipulace s daty a analýzy.
Python import pandas as pd # Read the CSV file into a DataFrame df = pd . read_csv ( 'employees.csv' ) # Display the DataFrame print ( df )
výstup:
jméno oddělení narozeniny_měsíc
0 John Smith HR Červenec
1 Alice Johnson IT říjen
2 Bob Williams Finance leden
Můžeme přistupovat ke konkrétním sloupcům, filtrovat data a provádět různé operace pomocí funkce pandas DataFrame. Například pokud chceme získat přístup ke sloupci 'name', můžeme použít df['name'].
Python # Access the 'name' column names = df [ 'name' ] print ( names )
Výstup :
0 John Smith
1 Alice Johnsonová
2 Bob Williams
Jméno: jméno dtype: objekt
Psaní CSV souborů s Pandas
Pandy můžeme použít k zápisu CSV souborů. It can done by using pd.DataFrame() funkce. V tomto příkladu pandy Knihovna se používá k převodu seznamu slovníků (mydict) do DataFrame reprezentujícího tabulková data. DataFrame je poté zapsán do souboru Python CSV s názvem 'output.csv' pomocí metody to_csv, čímž se vytvoří strukturovaný a čitelný datový soubor pro další analýzu nebo sdílení.
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 )
Výstupní soubor CSV:
branchcgpannamerok
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Prateek3
EP9.1Sahil2
Ukládání e-mailů do souborů CSV
Začneme importem modulu csv a použijeme jej k ukládání jmen a e-mailů jako hodnot oddělených čárkou. Pomocí funkce open() vytvoříme soubor CSV a poté zapíšeme každý řádek pomocí objektu Writer se samostatnými sloupci pro jména a e-maily.
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 )
výstup:
E-maily ve formátu csv Vytvořit kvíz