知行编程网知行编程网  2022-05-18 06:00 知行编程网 隐藏边栏 |   抢沙发  28 
文章评分 0 次,平均分 0.0

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


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

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

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

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

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


第一招:简单的读取

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

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


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

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

  • 首先读取csv 文件,然后用csv.reader生成一个csv迭代器f_csv
  • 然后利用迭代器的特性,next(f_csv)获取csv文件的头,也就是表格数据的头
  • 接着利用for循环,一行一行打印row的内容,也就是表格数据的身体

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


第二招:用nametuple

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

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

  • nametuple其实是一个非常有用的类,这个类属于collections模块,而这个模块简直就是一个百宝箱里面有非常多的牛逼的库;
  • 这里我们用next(f_csv)其实就是获取表格的头部来初始化这个Row;
  • 哇!用Python读取CVS文件竟然有5招,据说90%的人只会2招

  • 然后循环来构造这个Row的数据,把我们表格里面的每一行的数据都喂成nametuple格式的row_info;
  • 这样做的好处就是你可以随心所欲的访问这个row_info里面的数据,就想访问类数据一样,比如row_info.price 



第三招:用tuple类型转换

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

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

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

看一下结果:

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


第四招:用DictReader

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

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

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

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

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


第五招:用字典转换

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

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

原来的数据价格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



<p style="font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;caret-color: rgb(51, 51, 51);"><span style="font-size: 15px;"><span style=""><strong>菜鸟编程大本营</strong></span><span style="">,现已正式上线!</span></span><br  /></p><p style="font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;caret-color: rgb(51, 51, 51);"><br  /></p><p style="font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;caret-color: rgb(51, 51, 51);"><span style="font-size: 15px;"><span style="">接下来我们将会在该上,为大家</span><span style=""><strong>分享优质编程语言里趣味的干货,通俗易懂的实战案例,经验分享,让菜鸟也爱上编程。</strong></span></span></p><p style="font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;caret-color: rgb(51, 51, 51);"><br  /></p><pre style="letter-spacing: 0.544px;caret-color: rgb(51, 51, 51);line-height: inherit;"><section style="margin-right: 8px;margin-left: 8px;padding-right: 0.5em;padding-left: 0.5em;font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;text-align: center;"><img class="rich_pages" data-cropselx1="0" data-cropselx2="212" data-cropsely1="0" data-cropsely2="212" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="1280"  style="box-shadow: rgb(180, 180, 180) 0em 0em 0.5em 0px;box-sizing: border-box !important;visibility: visible !important;width: 212px !important;" src="https://www.zkxjob.com/wp-content/uploads/2022/05/wxsync-2022-05-b346e7f21a03a3c9960eea03c0612e4b.jpeg"  /></section>
<section data-darkmode-color-15968917432472="rgba(163, 163, 163, 0.9)" data-darkmode-original-color-15968917432472="rgba(230, 230, 230, 0.9)" data-darkmode-bgcolor-15968917432472="rgb(25, 25, 25)" data-darkmode-original-bgcolor-15968917432472="rgb(255, 255, 255)" style="margin-right: 8px;margin-left: 8px;min-height: 1em;text-align: right;"></section>

本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享