基本概念
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列.
特点
- 读取出的数据一般为字符类型,如果是数字需要人为转换为数字
- 以行为单位读取数据
- 列之间以半角逗号或制表符为分隔,一般为半角逗号
- 一般为每行开头不空格,第一行是属性列,数据列之间以间隔符为间隔无空格,行之间无空行
- 减少存储信息的容量,极大限度的减少了系统运行时的I/O消耗,以提高识别系统的整体运行速度。
注:行之间无空行十分重要,如果有空行或者数据集中行末有空格,读取数据时一般会出错,引发[list index out of range]错误。
解决方案
写入CSV文件
import csv
with open('new.csv','w') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['country','language'])#这里要以list形式写入,writer会在新建的csv文件中,一行一行写入
常见错误list index out of range
- 其中我们重点需要讲的是 with open('new.csv','w') as csvfile: 这个语句。表示写入csv文件,如果不加上参数 newline='' 表示以空格作为换行符,而是用 with open('new.csv','w') as csvfile: 语句。则生成的表格中会出现空行。
- 不仅仅是用python I/O进行csv数据的读写时,利用其余方法读写csv数据,或者从网上下载好csv数据集后都需要查看其每行后有没有空格,或者有没有多余的空行。避免不必要的错误~影响数据分析时的判断。
读取CSV文件
- 使用Python I/O方法进行读取时即是新建一个List 列表然后按照先行后列的顺序(类似C语言中的二维数组)将数据存进空的List对象中,如果需要将其转化为numpy 数组也可以使用np.array(List name)进行对象之间的转化。
import csv
with open('demo.csv', 'r') as csvfile:
spamreader = csv.reader(csvfile)
for row in spamreader:
print(row)# type of row: list
参考文章
https://www.cnblogs.com/cloud-ken/p/8432999.html