CSV文件在Python中的几种处理方式

Comma Separated Values,简称CSV,它是一种以逗号分隔数值的文件类型。在数据库或电子表格中,它是最常见的导入导出格式,它以一种简单而明了的方式存储和共享数据,CSV文件通常以纯文本的方式存储数据表。今天,我将给大家分享在Python中如何操作CSV文件。

一、数据源

首先,我们来看看本次操作的数据源,图1 CSV文件是在Excel中打开的,图2 CSV文件是在Notepad++中打开的,我们在图2中可以看到数值之间是以逗号分隔开的,每行末尾是CR回车符和LF换行符(请注意,Linux系统以LF结尾,MacOS系统以CR结尾)。

 

二、使用Python基本语法读写CSV文件

使用基本语法读取CSV文件中的数据大概思路是:获取文件对象,读取表头,按逗号分隔符拆分表头字段,使用for循环语句获取表体记录数据,拆分后再次写入另一张CSV文件中(如果要将数据写入xls*格式的文件中,请参考前期公众号文章),步骤如下:

Step 1:导入必要模块,获取输入输出文件路径。

import sys

infile = sys.argv[1]

outfile = sys.argv[2]

Step 2:使用open内置函数获取文件对象。

with open(infile, "r", newline='') as fr, open(outfile, "w", newline='') as fw:

Step 3:使用文件对象的readline方法或者迭代器的next方法读取表头(文件对象是一个迭代器对象,支持迭代协议),使用str.split方法对表头进行拆分(注意,要使用strip函数去掉尾部换行符)。

header = next(fr)

header = header.strip()

header_list = header.split(",")

Step 4:既然表头已经查分好了,我们需要将表头写入文件对象中(注意尾部需要添加一个换行符哦)。

fw.write(",".join(map(str, header_list)) + "\n")

当然,上面的代码也可以这么写:

print(*header_list, sep=",", file=fw)

Step 5:使用for循环读取表体数据,并将其拆分成列表写入到文件中。

for row in fr:

row = row.strip()

row_list = row.split(",")

fw.write(",".join(map(str, header_list)) + "\n")

以上步骤完成后,在命令提示符中输入:

python csvrw.py inputfile.csv outputfile.csv

输入输出csv文件名称以及脚本名称请自定义,以上只是举例说明。

以上代码如下:

 

三、使用csv模块读写CSV文件

csv模块是Python内置的一个模块,它考虑了csv文件中的各种复杂情况,平时处理文件基本上使用此模块,下面来看看csv模块处理csv文件的方式,其步骤如下:

Step 1:首先,导入必要模块,获取输入输出文件路径。

import sys

import csv

infile = sys.argv[1]

outfile = sys.argv[2]

Step 2:使用open内置函数获取文件对象。

with open(infile, "r", newline='') as incsv, open(outfile, "w", newline='') as outcsv:

Step 3:使用csv模块中的reader和writer函数分别获取reader和writer对象。

freader = csv.reader(incsv, delimiter=",")

fwriter = csv.writer(outcsv, delimiter=",")

Step 4:使用for循环语句读取和写入数据。

for rowlist in freader:

fwriter.writerow(rowlist)

以上步骤完成后,在命令提示符中输入相应命令即可(请参照)

代码如下:

 

四、使用pandas读写CSV文件

pandas库是一个强大的数据处理和数据分析库,使用pandas处理csv文件更简单,其步骤如下:

Step 1:首先,导入必要模块,获取输入输出文件路径。

import sys

import pandas as pd

infile = sys.argv[1]

outfile = sys.argv[2]

Step 2:使用pandas的read_csv方法将数据存储到一个DataFrame对象中。

dataframe = pd.read_csv(infile)

Step 3:然后使用DataFrame的to_csv方法将其输出到另一张csv表中。

dataframe.to_csv(outfile, index=False)

以上步骤完成后,在命令提示符中输入相应命令即可(请参照)

代码如下:

 

  •  
 
posted @ 2019-08-08 11:30  不夜男人  阅读(38347)  评论(0编辑  收藏  举报