Python reads and writes CSV format files
In data analysis, it is often necessary to access data from CSV-formatted files and to write data to a CSV file. It is convenient and easy to read the data in the CSV file directly as Dict type and dataframe, and the following code takes the iris data as an example.
CSV file read as Dict
Code
#-*-Coding:utf-8-*-import csvwith open (' e:/iris.csv ') as Csvfile:reader = csv. Dictreader (CSVFile, Fieldnames=none) # fieldnames default to None, if the read CSV file does not have a table header, you need to specify list_1 = [E for e in reader] # Each row of data is stored as a dict in the linked list csvfile.close () print list_1[0]
Output
{' petal.length ': ' 1.4 ', ' sepal.length ': ' 5.1 ', ' petal.width ': ' 0.2 ', ' sepal.width ': ' 3.5 ', ' species ': ' Setosa '}
If each piece of data that is read needs to be processed separately and the amount of data is large, it is recommended to process it and then put it.
list_1 = List () for E in reader: list_1.append (Your_func (e)) # Your_func the processing function for each data
Multiple types of dict data are written to the CSV file
Code
# data = [{' Petal.length ': ' 1.4 ', ' sepal.length ': ' 5.1 ', ' petal.width ': ' 0.2 ', ' sepal.width ': ' 3.5 ', ' species ': ' SE Tosa '},{' petal.length ': ' 1.4 ', ' sepal.length ': ' 4.9 ', ' petal.width ': ' 0.2 ', ' sepal.width ': ' 3 ', ' species ': ' Setosa '},{' Petal.length ': ' 1.3 ', ' sepal.length ': ' 4.7 ', ' petal.width ': ' 0.2 ', ' sepal.width ': ' 3.2 ', ' species ': ' Setosa '},{' Petal.length ': ' 1.5 ', ' sepal.length ': ' 4.6 ', ' petal.width ': ' 0.2 ', ' sepal.width ': ' 3.1 ', ' species ': ' Setosa '}]# Table header Header = [' Petal.length ', ' sepal.length ', ' petal.width ', ' sepal.width ', ' species ']print len (data) with open (' e:/ Dst.csv ', ' WB ') as Dstfile: #写入方式选择wb, otherwise there is a blank line writer = csv. Dictwriter (Dstfile, Fieldnames=header) Writer.writeheader () # Write header writer.writerows (data) # Bulk Write Dstfile.close ()
The code above writes the data to the CSV file as a whole, and uses the Writerows function if the amount of data is large and you want to see how much data is written in real time.
Read the CSV file as Dataframe
Code
# Read the CSV file for Dataframeimport pandas as Pddframe = PD. Dataframe.from_csv (' E:/iris.csv ')
You can also have a slightly zigzag point:
Import Csvimport Pandas as Pdwith open (' e:/iris.csv ') as CSVFile: reader = csv. Dictreader (CSVFile, Fieldnames=none) # fieldnames default to None, if the read CSV file does not have a table header, you need to specify list_1 = [E for e in reader] # Each row of data is stored as a dict in the linked list csvfile.close () Dfrme = PD. Dataframe.from_records (list_1)
Dataframe writing to a CSV file
Dfrme.to_csv (' E:/dst.csv ', index=false) # do not number each line