《Python大规模机器学习》— 2.2.3 ​使用pandas I/O工具

举报
华章计算机 发表于 2019/06/12 21:43:22 2019/06/12
【摘要】 本节书摘来自华章计算机《Python大规模机器学习》一书中的第2章,第2.2.3节,作者是[荷]巴斯蒂安·贾丁(Bastiaan Sjardin)[意]卢卡·马萨罗(Luca Massaron)[意]阿尔贝托·博斯凯蒂(Alberto Boschetti)王贵财刘春明译。

2.2.3    使用pandas I/O工具

我们可以使用pandas的read_csv函数替代csv模块。该函数专门用于上传CSV文件,pandas有大量支持多种文件格式的I/O函数,这是其中之一。相关文档资料请查看http://pandas.pydata.org/pandas-docs/stable/io.html。

使用pandas的I/O函数的优点如下:

  •  如果更改源代码类型,能保持代码一致性,也就是说,只需要重新定义流迭代器。

  •  支持多种格式,如CSV、普通TXT、HDF、JSON和对特定数据库的SQL查询等。

  •  数据以DataFrame数据结构的形式流入所需大小的数据块,以便以位置方式或通过调用其标签来访问这些特征,这要用到.loc、.iloc、.ix等典型的pandas数据切割方法。

下面的示例仍然使用与之前相同的方法,但使用pandas的read_csv函数建立流数据:

 image.png

  image.png

这里需要注意的是,迭代器是通过指定块大小来实例化的,也就是说,迭代器在每次迭代时必须返回行数。chunksize参数假设值的范围是从1到任何值,但很明显,小批量处理(检索到的块)的大小与可用内存紧密相连,以便在后续预处理阶段中存储和操作它。

将较大数据块调入内存具有的优势仅仅体现在磁盘访问上。根据物理存储特性,较小数据块需要对磁盘进行多次访问,这会花费更长时间来传递数据。然而,从机器学习角度来看,较小或较大的块对Scikit中的非核心学习函数几乎没有影响,因为它们每次只学习一个实例,从而使得它们在计算成本上呈现真正的线性化。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。