查看原文
其他

Python之读取与写入CSV文件

爬虫俱乐部 Stata and Python数据分析 2022-03-15


本文作者:闫续文

文字编辑:张梦婷

技术总编:张学人


好消息!!!爬虫俱乐部将于2018年11月30日2018年12月2日在武汉举行Stata编程技术培训。本次培训主要面向财务会计金融专业高校教师、硕博生,课程均是采用财务金融领域的案例,旨在帮助财务金融领域的研究者熟悉Stata数据分析技巧,能够通过编程读取不同类型的数据源、实现复杂数据合并、清洗的程序化,通过简单的程序构造复杂的财务金融指标。详细培训大纲及报名方式,请点击文末阅读原文呦~

爬虫俱乐部是您身边的科研助手,能够为您在数据处理、实证研究中提供帮助。承蒙30000+粉丝的支持与厚爱,我们在腾讯课堂推出了网络视频课程,专注于数据整理、网络爬虫、循环命令编制和结果输出…李老师及团队精彩地讲解,深入浅出,注重案例与实战,让您更加快速高效地掌握Stata技巧及数据处理的精髓,而且可以无限次重复观看,百分百好评,简单易学,一个月让您从入门到精通。绝对物超所值!观看学习网址:https://ke.qq.com/course/286526?tuin=1b60b462,敬请关注!

有问题,不要怕!访问 

http://www.wuhanstring.com/uploads/5_aboutus/爬虫俱乐部-用户问题登记表.docx (复制到浏览器中)下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~

爬虫俱乐部的github主站正式上线了!我们的网站地址是:https://stata-club.github.io,粉丝们可以通过该网站访问过去的推文哟~

爬虫俱乐部隆重推出数据定制及处理业务,您有任何网页数据获取及处理方面的难题,请发邮件至我们邮箱statatraining@163.com,届时会有俱乐部高级会员为您排忧解难!


CSV(Comma-Separated Values)格式是电子表格和数据库最常用的导入和导出格式,其文件以纯文本形式存储表格数据(数字和文本)。CSV文件由任意数目的记录组成,记录间以某种符号分隔,最常见的是逗号制表符。CSV文件虽然使用广泛,但目前还没有一个标准化的格式描述,缺乏明确定义的标准意味着由不同应用程序生成和使用的数据通常存在细微差别,而这些差异往往会使处理来自多个源的CSV文件变得相当烦人。

然而,尽管分隔符和引用字符各不相同,但由于CSV文件的总体格式足够相似,因此,Python内置了专门的csv模块,方便用户对CSV文件进行操作,如可以读取和写入CSV文件、自定义编码风格等。今天我们就来介绍如何使用csv模块读取和写入CSV文件

读取CSV文件

csv.reader(csvfile,dialect='excel',**fmtparams)

参数说明:

  • csvfile:必须是支持迭代(Iterator)的对象,可以是文件(file)对象或者列表(list)对象;

  • dialect:编码风格,默认为excel即逗号(,)分隔,也支持制表符(tab)分隔及自定义;

  • fmtparam:格式化参数,用来覆盖之前dialect对象指定的编码风格。

现在我们有一个“file.csv”文件,包含了两个上市公司2015-2017年的总资产数据,如下图所示:

我们使用csv.reader()读取该文件,程序如下:

import csv  #导入csv模块
with open('d:\\file.csv', 'r', encoding='utf-8') as csvFile:  #以只读方式打开"file.csv"文件并返回文件对象"csvFile"    reader =csv.reader(csvFile)   #只上传第一个参数"csvFile",剩下两个采用缺省设定    for row in reader:  #输出"reader"中的每行数据        print(str(row))



我们运行这段程序,输出结果如下:

可以看到,reader()返回的对象reader把读取到的每一行数据转化成了一个list,list中每个元素是一个字符串

注:参数newline用来控制文本模式之下一行的结束字符。在windows这种使用\r\n的系统里,如果不使用newline='',会自动在行尾多添加一个\r,导致多出一个空行,即行尾为\r\r\n。

写入并生成CSV文件

csv.writer(csvfile,dialect='excel',**fmtparams)

参数含义同上这里不再赘述,我们使用csv.reader()来写入“北京”、“武汉”、“上海”三个城市的天气状况,程序如下:

import csv weather = [['北京', '多云', '6℃', '19℃'],['武汉', '小雨', '15℃', '23℃'],['上海', '多云', '17℃', '23℃']]
with open('d:\\file1.csv', 'w', encoding='utf-8', newline='') as csvFile:  #打开一个文件"file1.csv"用于写入(若该文件存在则打开文件并从开头开始编辑,若不存在则创建新文件)并返回文件对象"csvFile"    writer =csv.writer(csvFile, delimiter=' ')   #通过参数delimiter设置分隔符为空格    for row in weather:   #一行一行写入weather列表中的元素        writer.writerow(row)

我们打开生成的“file1.csv”文件,如下图所示:

可以看到,由于我们设置delimiter=' ',生成的CSV文件中每一行的元素都是以空格进行分隔的。

对爬虫俱乐部的推文累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫!

往期推文推荐

关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存