用Python读取CSV文件的5种方式

用Python读取CSV文件的5种方式典型的数据集stocks.csv:一个股票的数据集,其实就是常见的表格数据。有股票代码,价格,日期,时间,价格变动和成交量。这个数据集其实就是一个表格数据,有自己的头部和身体。第一招:简单的读取我们先来看一种简单读取方法,先用csv.reader()函数读取文件的句柄f生成一个csv的句柄,其实就是一个迭代器,我们看一下这个reader的源码:喂给reader一个可迭代对象或者是文件的object,然后返回一个可迭代对象。首先读取csv文件,然后用csv.reader生成一个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’]的内容就会被更新了

参考链接 :

用Python读取CSV文件的5种方式https://mp.weixin.qq.com/s/cs4buSULva1FgCctp_fB6g

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162465.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【并发缺陷】data race数据竞争、atomicity violation原子违背、order violation顺序违背

    【并发缺陷】data race数据竞争、atomicity violation原子违背、order violation顺序违背三类均是跟共享变量的内存访问有关的缺陷。对于并发缺陷的分类目前国内许多是分死锁、数据竞争、原子违背、顺序违背。或者在并发缺陷中又细分concurrencyvulnerability:死锁和数据竞争。感觉各个作者有自己的分类方法????以下引用的中文解释来自<并发缺陷暴露、检测与规避研究综述>哈工大的苏小红老师实验室发表在2015年计算机学报上目前找到外文文献分为7类。其他四类…

    2025年6月29日
    3
  • 水仙花数

    水仙花数水仙花数

    2022年4月24日
    44
  • bfs官网_山谷和山脉

    bfs官网_山谷和山脉FGD小朋友特别喜欢爬山,在爬山的时候他就在研究山峰和山谷。为了能够对旅程有一个安排,他想知道山峰和山谷的数量。给定一个地图,为FGD想要旅行的区域,地图被分为 n×n 的网格,每个格子 (i,j) 的高度 w(i,j) 是给定的。若两个格子有公共顶点,那么它们就是相邻的格子,如与 (i,j) 相邻的格子有(i−1,j−1),(i−1,j),(i−1,j+1),(i,j−1),(i,j+1),(i+1,j−1),(i+1,j),(i+1,j+1)。我们定义一个格子的集合 S 为山峰(山谷)当且仅当:

    2022年8月9日
    6
  • live2d 看板娘 简单添加看版娘到自己的网站

    live2d 看板娘 简单添加看版娘到自己的网站

    2022年2月20日
    50
  • 基于相关滤波的目标跟踪算法_粒子滤波目标跟踪算法优缺点

    基于相关滤波的目标跟踪算法_粒子滤波目标跟踪算法优缺点相关跟踪的核心就是滤波器filters的求解,从MOSSE到KCF再到SRDCF,滤波器的模型越来越复杂,计算速度越来越慢,使得相关滤波在计算速度上的优势越来越不明显。比如较新的算法CFLB和BACF等采用了空间约束来解决边界效应,SRDCF和STRCF等使用空间正则来解决边界效应,这些解决边界效应的措施都让相关跟踪面临实时性的挑战。ADMM把一个大优化问题分成可分布式同时求解的多个子问题,通过对…

    2025年6月25日
    2
  • 【经验总结—2】:深度学习数据集下载网站总结[通俗易懂]

    【经验总结—2】:深度学习数据集下载网站总结[通俗易懂]数据集是深度学习的基础,深度学习模型的好坏与数据集有着直接关联,这里给出一些搜索数据集的优秀网站,记得要一键三连哦!!1.CVDatasetsontheweb一个非常全的数据集总结网站,里面包含了目标检测、目标分类、目标识别、目标跟踪、语义分割、人体姿态数据集等。2.YetAnotherComputerVisionIndexToDatasets(YACVID)全,啥都有!3.阿里天池数据集不得不说,阿里nb!数据集种类丰富,分类明晰!不止如此,阿里每年都

    2022年10月7日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号