CSV
⽂件介绍
CSV
(
Comma Separated Values
)全称逗号分隔值⽂件是⼀种简单、通⽤的⽂件格式,被⼴泛的应⽤于应⽤程序(数据库、电⼦表格等)数据的导⼊和导出以及异构系统之间的数据交换。因为CSV
是纯⽂本⽂件,不管是什么操作系统和编程语⾔都是可以处理纯⽂本的,⽽且很多编程语⾔中都提供了对读写CSV⽂件的⽀持,因此
CSV
格式在数据处理和数据科学中被⼴泛应⽤。
CSV
⽂件有以下特点:
1.
纯⽂本,使⽤某种字符集(如
ASCII
、
Unicode
、
GB2312
)等);
2.
由⼀条条的记录组成(典型的是每⾏⼀条记录);
3.
每条记录被分隔符(如逗号、分号、制表符等)分隔为字段(列);
4.
每条记录都有同样的字段序列。
CSV
⽂件可以使⽤⽂本编辑器或类似于
Excel
电⼦表格这类⼯具打开和编辑,当使⽤
Excel
这类电⼦表格打开CSV
⽂件时,你甚⾄感觉不到
CSV
和
Excel
⽂件的区别。很多数据库系统都⽀持将数据导出到
CSV
⽂件中,当然也⽀持从CSV
⽂件中读⼊数据保存到数据库中,这些内容并不是我们这⾥讨论的重点。
将数据写⼊
CSV
⽂件
现有五个学⽣三⻔课程的考试成绩需要保存到⼀个
CSV
⽂件中,要达成这个⽬标,可以使
Python
标准库中的 csv
模块,该模块的
writer
函数会返回⼀个
csvwriter
对象,通过该对象的
writerow或 writerows
⽅法就可以将数据写⼊到
CSV
⽂件中,具体的代码如下所示。
import csv
import random
with open('scores.csv', 'w') as file:
writer = csv.writer(file)
writer.writerow(['姓名', '语⽂', '数学', '英语'])
names = ['关⽻', '张⻜', '赵云', '⻢超', '⻩忠']
for i in range(5):
verbal = random.randint(50, 100)
math = random.randint(40, 100)
english = random.randint(30, 100)
writer.writerow([names[i], verbal, math, english])
需要说明的是上⾯的
writer
函数,该函数除了传⼊要写⼊数据的⽂件对象外,还可以
dialect
参数,它表示CSV
⽂件的⽅⾔,默认值是
excel
。除此之外,还可以通过
delimiter
、
quotechar
、
quoting参数来指定分隔符(默认是逗号)、包围值的字符(默认是双引号)以及包围的⽅式。其中,包围值的字符主要⽤于当字段中有特殊符号时,通过添加包围值的字符可以避免⼆义性。⼤家可以尝试将上⾯第5⾏代码修改为下⾯的代码,看看⽣成的
CSV
⽂件到底有什么区别。
writer = csv.writer(file, delimiter='|', quoting=csv.QUOTE_ALL)
从
CSV
⽂件读取数据
如果要读取刚才创建的
CSV
⽂件,可以使⽤下⾯的代码,通过
csv
模块的
reader
函数可以创建出
csvreader
对象,该对象是⼀个迭代器,可以通过
next
函数或
for-in
循环读取到⽂件中的数据。
import csv
with open('scores.csv', 'r') as file:
reader = csv.reader(file, delimiter='|')
for line in reader:
print(reader.line_num, end='\t')
for elem in line:
print(elem, end='\t')
print()
注意
:上⾯的代码对
csvreader
对象做
for
循环时,每次会取出⼀个列表对象,该列表对象包含
了⼀⾏中所有的字段。
简单的总结
将来如果⼤家使⽤
Python
做数据分析,很有可能会⽤到名为
pandas
的三⽅库,它是
Python
数据分析的神器之⼀。 pandas
中封装了名为
read_csv
和
to_csv
的函数⽤来读写
CSV
⽂件,其中
read_CSV
会将读 取到的数据变成⼀个 DataFrame
对象,⽽这个对象就是
pandas
库中最重要的类,它封装了⼀系列的⽅法⽤于对数据进⾏处理(清洗、转换、聚合等);⽽ to_csv
会将
DataFrame
对象中的数据写⼊
CSV
⽂件,完成数据的持久化。