Python目前是最火的语言了,无论是做开发,测试,数据分析,后端,还是办公自动化都可以用Python帮你轻松解决一些琐碎的。尤其是一些重复的工作,而在日常的工作中经常打交道的就是文件的处理,其中CSV文件是经常需要使用的。

今天小编就教大家5招让你优雅的读取CSV文件非常实用。

我们先来看一下一个典型的数据集stocks.csv:

一个股票的数据集,其实就是常见的表格数据。有股票代码,价格,日期,时间,价格变动和成交量。这个数据集其实就是一个表格数据,有自己的头部和身体。

第一招:简单的读取

我们先来看一种简单读取方法,先用csv.reader()函数读取文件的句柄f生成一个csv的句柄,其实就是一个迭代器,我们看一下这个reader的源码:

喂给reader一个可迭代对象或者是文件的object,然后返回一个可迭代对象。

  • 首先读取csv 文件,然后用csv.reader生成一个csv迭代器f_csv

  • 然后利用迭代器的特性,next(f_csv)获取csv文件的头,也就是表格数据的头

  • 接着利用for循环,一行一行打印row的内容,也就是表格数据的身体

第二招:用nametuple

上面的第一招其实是最简单的,下面我们用nametuple 来包裹一下这个生成的row数据。

  • nametuple其实是一个非常有用的类,这个类属于collections模块,而这个模块简直就是一个百宝箱里面有非常多的牛逼的库;

  • 这里我们用next(f_csv)其实就是获取表格的头部来初始化这个Row;

  • 然后循环来构造这个Row的数据,把我们表格里面的每一行的数据都喂成nametuple格式的row_info;

  • 这样做的好处就是你可以随心所欲的访问这个row_info里面的数据,就想访问类数据一样,比如row_info.price

第三招:用tuple类型转换

如果我们对csv数据每一行的类型都非常清楚的话,嘿嘿可以用一个设定好的数据格式转换头来对数据进行转换。

操作的步骤其实跟上面差不多,就是对数据结果的清洗处理稍微不一样。这里非常巧妙的zip来构造一个嵌套的数据列表,然后用convert(data)把csv文件里面每一行的数据进行类型转换,这招真的不错!

看一下结果:

第四招:用DictReader

上面用的nametuple其实也是一个数据的映射,有没有什么方法可以直接把csv 的内容用映射的方法读取,直接出来一个字典,还真有的,来看一下代码:

是不是非常简捷,原来csv模块直接内置了DictReader(),按照字典的方法进行读取,然后生成一个有序的字典,看一下结果:

有兴趣的可以看一下这个DictReader()的源码,它其实一个内部构造的迭代器类,在内部的__next__其实也是用的OrderedDict(zip(self.fieldnames, row))来生成的。

第五招:用字典转换

如果我们需要对这个csv里面的数据进行清洗,因为读出来的时候都是字符串,我们需要更新为特定的数据类型,这个时候也可以用字典转换这一招,也是非常巧妙的,我们看一下源码:

原来的数据价格Price和成交量,我希望最后读取生成的是一个浮点型数据和整形的数据,这么搞呢,用一个字典来巧妙的更新key即可。

  • 首先我们声明一个自定义的类型转换器field_types;

  • 然后循环生成一个可迭代的对象(key,conversion(row[key]);

  • 最后更新一下字典里面相同的key,比如row['price']的内容就会被更新了。


看完上面这5招,是不是很惊叹!哇塞原来Python读取csv文件读取还有这么花样啊,其实小编只会其中最简单的第一招。发现越到后面发现招式越精妙,Python的技巧真的好多呀,话不多说,赶紧代码撸起来,吸收一波功力。

推荐阅读:

盗墓热再起!我爬取了6万条《重启之极海听雷》的评论

爱了爱了!GitHub7200星,一个可以听全网无损音乐的神器

放个大招!老鸟用Python打造了一款哈利波特的“隐身衣”

PyCharm vs VSCode,是时候改变你的 IDE 了!

菜鸟来也!50行Python代码一键整理桌面

Python cookbook大神写的极速入门Python,真香!

end

菜鸟编程大本营,现已正式上线!接下来我们将会在该公众号上,为大家分享优质编程语言里趣味的干货,通俗易懂的实战案例,经验分享,让菜鸟也爱上编程。

哇!用Python读取CVS文件竟然有5招,据说90%的人只会2招相关推荐

  1. python 读取excel文件 效率 时间 格式_python读取Excel文件中的时间数据

    在使用python读取Excel文件中的时间格式,碰到的时间格式转换问题: 读取这样的表格: 输出这样的数据结果: 然而这样的结果却不是我们想要的,我们需要的是这样的结果: 1.安装python官方库 ...

  2. python读取一个文件夹/子文件夹下的所有文件名字

    python读取一个文件夹/子文件夹下的所有文件名字 示例代码: import osfile_path = './images/' all_file_name = os.listdir(file_pa ...

  3. python删除重复值所在的行数_使用python读取txt文件的内容,并删除重复的行数方法...

    注意,本文代码是使用在txt文档上,同时txt文档中的内容每一行代表的是图片的名字. #coding:utf-8 import shutil readDir = "原文件绝对路经" ...

  4. python读取txt文件并画图

    1,使用python读取txt文件 已知txt文件内容如下: 0 01 12 43 94 165 256 36 请以第一列为x轴,第二列为y轴画图 步骤如下: 1)使用readlines读取文件 2) ...

  5. MATLAB和Python读取wave文件的波形对比

       用python读取.wav文件的波形后再用MATLAB读取文件波形进行验证. 1.MORSE 1.1 Python 程序见之前的博客. 波形如图1所示: 图1 1.2 MATLAB 读取波形程序 ...

  6. 用Python读取整个文件

    本文翻译自:Reading entire file in Python If you read an entire file with content = open('Path/to/file', ' ...

  7. python怎么读xlsx_用python读取xlsx文件

    一 准备工作: 二 xlrd库读取 首先安装xlrd库,安装方法: pip install xlrd import xlrd #打开excel wb = xlrd.open_workbook('tes ...

  8. python读取.edf文件

    目录 EDF文件简介 MNE-python读取.edf文件 案例 第一步:导入工具包 第二步:加载本地edf文件 第三步:获取原始数据中事件 第四步:根据事件ID获取对应事件 第五步:绘制事件图 本教 ...

  9. python读取.locs文件

    目录 简介 知识点: 案例 本教程为脑机学习者Rose发表于公众号:脑机接口社区 .QQ交流群:903290195 简介 本案例主要介绍如何读取eeglab示例文件.locs文件.为了演示电极位置,所 ...

最新文章

  1. java提高篇(八)----详解内部类
  2. 使用Docker中的mysql
  3. /var/lib/mlocate/mlocate.db
  4. 前端开发工程师养成记
  5. 烙饼啊烙饼{转自ITEO
  6. VSCode设置命令行终端为Git
  7. 包子和饺子之扫地机器人_扫地机器人:行业发展放缓,市场暗藏潜力
  8. 引领全球增长的60大技术:机会、增长、投资、洞察
  9. 跟着百度学PHP[13]-文件上传
  10. bzoj2818: Gcd
  11. JAVA 面向对象的一些基础理解
  12. zynq文档学习之GPIO寄存器基本操作
  13. Windows下PHP安装配置
  14. [C#] 汉字转拼音,支持多音字
  15. 2022年中国工业机器人市场现状研究分析与发展前景预测报告
  16. 网站域名被封锁、被屏蔽、被和谐后该如何处理
  17. 教孩子学编程 python语言版_教孩子学编程 PYTHON语言版 PDF_IT教程网
  18. 音视频 | 音视频学习-01
  19. 目标跟踪评估绘图(3):ubuntu18.04在MATLAB2016b下的vot-toolkit配置,绘制VOT数据集的EAO评估图,与其他算法进行比较
  20. 排序算法(希尔排序)

热门文章

  1. 开机自检,BIOS运行原理
  2. vim配置http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html
  3. java如何进行word文档的合并
  4. 用好HugePage,告别Linux性能故障
  5. 酷派t2co1怎么升Android5,而且双清不了怎么办Coolpad725?酷 – 手机爱问
  6. 酷派删除android系统升级,酷派手机怎么升级系统 酷派系统升级操作方法
  7. PHP 调用百度翻译api翻译数据
  8. 极限编程-拥抱变化阅读感想(一)
  9. 小码农也有大梦想,技术详细介绍
  10. phpStrom连接MySQL数据库