第017课:⽤Python读写CSV⽂件

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 ⽂件,完成数据的持久化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值