Práce se soubory csv v Pythonu

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

Práce se soubory csv v Pythonu

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

Práce se soubory csv v Pythonucsv soubor

Zvažte, že soubor CSV vypadá v prostém textu takto:

univerzitní rekorduniverzitní 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 csvE-maily ve formátu csv Vytvořit kvíz