《Python大规模机器学习》— 2.2.3 使用pandas I/O工具
【摘要】 本节书摘来自华章计算机《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函数建立流数据:
这里需要注意的是,迭代器是通过指定块大小来实例化的,也就是说,迭代器在每次迭代时必须返回行数。chunksize参数假设值的范围是从1到任何值,但很明显,小批量处理(检索到的块)的大小与可用内存紧密相连,以便在后续预处理阶段中存储和操作它。
将较大数据块调入内存具有的优势仅仅体现在磁盘访问上。根据物理存储特性,较小数据块需要对磁盘进行多次访问,这会花费更长时间来传递数据。然而,从机器学习角度来看,较小或较大的块对Scikit中的非核心学习函数几乎没有影响,因为它们每次只学习一个实例,从而使得它们在计算成本上呈现真正的线性化。
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)