1. CSV简介CSV(Comma Separated Values)是逗号分隔符文本格式,常用于Excel和数据库的导入和导出,Python标准库的CSV模块提供了读取和写入CSV格式文件的对象。 1.1 csv.reader对象和csv文件的读取csv.reader(csvfile,dialect='excel',**fmtparams),主要用于文件的读取,返回一个reader对象用于在csv文件内容上进行行迭代。 参数csvfile是文件对象或者list对象;dialect 用于指定csv的格式模式不同程序输出的csv格式有细微差别;fmtparams是一系列参数列表,主要用于设置特定的格式,以覆盖dialect中的格式。 csv.reader对象是可迭代对象,包含以下属性:
示例1:使用reader对象读取csv文件scores.csv,文件内容如下: 学号,姓名,性别,班级,语文,数学,英语
reader对象
1.2 csv.writer对象和csv文件的写入csv.writer(csvfile,dialect='excel',**fmtparams),主要用于把列表数据写入到csv文件。 其中参数csvfile是任何支持write()方法的对象,通常为文件对象;dialect 和fmtparams与csv.reader对象构造函数中的参数意义相同。 csv.writer对象包含以下属性和方法:
示例2: 使用writer对象写入csv文件
writer对象
1.3 csv.DictReader对象和csv文件的读取使用csv.reader对象从csv文件读取数据,结果为列表对象row,需要通过索引row[i]访问。如果希望通过csv文件的首行标题字段名访问,则可以使用csv.DictReader对象读取。 csv.DictReader(csvfile,fieldnames=None,restkey=None,restval=None,dialect='excel',*args,**kwds) 其中,csvfile是文件对象或list对象;fieldnames用于指定字段名,如果没有指定,则第一行为字段名;restkey和restval用于指定字段名和数据个数不一致时所对应的字段名或数据值,其他参数同reader对象。 DictReader对象属性和方法: # 方法: 示例3 :使用DictReader对象读取csv文件
DictReader对象
1.4 csv.DictWriter对象和csv文件的写入csv.DictWriter(csvfile,fieldnames,restval = '',extrasaction = 'raise',dialect = 'excel',*args,**kwds) extrasaction用于指定多余字段时的操作,其他参数同上。 DictWriter对象的属性和方法: # 方法:
DictWriter对象
1.5 csv文件格式化参数和Dialect对象1.5.1 csv 文件格式化参数创建reader/writer对象时,可以指定csv文件格式化命名参数。 参数说明: csv.QUOTE _ ALL (引用用所有字段) strict 如果为True,读入错误格式的CSV行时将导致csv.Error;默认值为False 示例5 :csv文件格式化参数示例
csv文件格式化
1.5.2 Dialect 对象若干格式化参数可以组成Dialect对象,Dialect对象包含对应于命名格式化参数的属性。可以创建 Dialect或其派生类的对象,然后传递给reader或writer的构造函数 可以使用下列csv模块的函数,创建Dialect对象。 csv.register_dialect(name[,dialect],**fmtparams):使用命名参数,注册一个名称。 csv.unregister_dialect(name):取消注册的名称。 csv.get_dialect(name):获取注册的名称的Dialect对象,无注册时csv.Error。 csv.list_dialects():所有注册Dialect对象的列表。 另外可以使用csv模块函数,获取和设置字段的长度限制:csv.filed_size_limit([new_linit]) 示例6:Dialect对象示例
dialect对象
2. 使用pandas处理大型csv文件2.1 pandas简介Pandas 即Python Data Analysis Library,是为了解决数据分析而创建的第三方工具,它不仅提供了丰富的数据模型,而且支持多种文件格式处理,包括CSV、HDF5、HTML 等,能够提供高效的大型数据处理。其支持的两种数据结构——Series 和DataFrame——是数据处
理的基础。下面先来介绍这两种数据结构。
Series:它是一种类似数组的带索引的一维数据结构,支持的类型与NumPy兼容。如果不指定索引,默认为0到N-1。通过obj.values() 和obj.index() 可以分别获取值和索引。当给Series 传递一个字典的时候,Series 的索引将根据字典中的键排序。如果传入字典的时候同时重新指定了index 参数,当index 与字典中的键不匹配的时候,会出现时数据丢失的情况,标记为NaN。在pandas 中用函数isnull() 和notnull() 来检测数据是否丢失。
View Code
DataFrame :类似于电子表格,其数据为排好序的数据列的集合,每一列都可以是不同的数据类型,它类似于一个二维数据结构,支持行和列的索引。和Series 一样,索引会自动分配并且能根据指定的列进行排序。使用最多的方式是通过一个长度相等的列表的字典来构建。构建一个DataFrame 最常用的方式是用一个相等长度
列表的字典或NumPy 数组。DataFrame 也可以通过columns 指定序列的顺序进行排序。
View Code
2.2 pandas处理csv文件 1)读取指定行和列的数据
读取指定行和列
如果出现错误提示:UnicodeDecodeError: 'ascii' codec can't decode byte 0xb8 原因:含有中文字符,将encoding设置为gbk 2)设置CSV文件与excel兼容 将scores.csv文件内容修改如下:
Scores.csv
下面的代码用于设置CSV 文件与excel 兼容,error_bad_lines=False 会直接忽略不符合要求的记录。
View Code
3)对文件进行分块处理并返回一个可迭代的对象
View Code
>>>>>待续
|
|
来自: 昵称62125662 > 《csv》