Feather包实现数据框快速读写,你值得拥有
![]()
什么是Feather?
Feature是一种文件格式,支持R语言和Python的交互式存储,速度更快。目前支持R语言的data.frame和Python pandas 的DataFrame。
Feather收到了Apache arrow 项目的支持,Apache Arrow是Apache基金会下一个全新的开源项目,同时也是顶级项目。它的目的是作为一个跨平台的数据层来加快大数据分析项目的运行速度。
Feather的特点
feather是一个用于存储数据框的快速的,轻量级的,易于使用的二进制文件格式。主要有以下特点:
- 轻量简单
- 不依赖语言:支持python和R语言,同时也可以被其他语言读取
- 高性能读写
代码演示
我的电脑硬件配置:win7,64位操作系统,8G内存,CPU A6双核。每个人电脑配置不同,数据读写的时间也就不同。读者可自行实验下述代码,一看究竟。
feather包的介绍于3月29号发布在RStudio的官方博客。由于当时只是发布在Github上,Windows用户安装需要使用gcc 4.93工具编译安装,过程比较繁琐。feather包今天正式在CRAN发布了第一版,现在我们只需在R 3.3.0下用install.packages()函数安装即可。没有升级到R 3.3.0版本的windows用户可以参考文章—手把手教你在Windows环境下升级R。下面我们在R中来试试feather包到底有多快:
library(feather)
x <- runif(1e7)
x[sample(1e7, 1e6)] <- NA # 10%的NA值
df <- as.data.frame(replicate(10, x))
# 内存占用
format(object.size(df), 'MB')
#[1] "762.9 Mb"
#数据写出
system.time(write_feather(df, 'test.feather'))
# 用户 系统 流逝
# 3.97 3.37 29.47
#数据导入
system.time(read_feather('test.feather'))
# 用户 系统 流逝
# 3.83 3.51 50.39
#查看下前几行数据
data <- read_feather('test.feather')
head(data)
class(data)
[1] "tbl_df" "tbl" "data.frame"
本来要演示feather包和readr包的速度对比,但是电脑配置不行,readr包数据写出花了将近一个小时还没什么动静,果断放弃了。关于readr包的的介绍感兴趣的读者可以参考这里
小结
Feature速度快,但是还处在开发阶段,官方认为暂时不适合长期存储数据,而且不能保证不同版本的兼容性。但是可以用于R和Python的交互,也是相当相当棒了。762.9Mb数据导入只需50.39秒,feather包你值得拥有。
参考文章:
- Feather: A Fast On-Disk Format for Data Frames for R and Python, powered by Apache Arrow
- Feather R语言和Python交互式硬盘存储格式
本文由雪晴数据网编辑整理。转载请注明本文链接http://www.xueqing.tv/cms/article/210
Feather包实现数据框快速读写,你值得拥有的更多相关文章
- R语言数据分析利器data.table包 —— 数据框结构处理精讲
R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理 ...
- 通过 sqldf 包使用 SQL 查询数据框
在前面的章节中,我们学习了如何编写 SQL 语句,在关系型数据库(如 SQLite 和MySQL )中查询数据.我们可能会想,有没有一种方法,能够直接使用 SQL 进行数据框查询,就像数据框是关系型数 ...
- R语言数据分析利器data.table包—数据框结构处理精讲
R语言数据分析利器data.table包-数据框结构处理精讲 R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代 ...
- Python基础 | 数据文件的读写
目录 txt txt的读入 txt的写出 csv xls\xlsx 在线网页数据 常用的工具 爬虫的步骤 pdf pdfrw PyPDF2 提取文档信息 word文档 其他统计软件生成文件 本文总结使 ...
- R语言Data Frame数据框常用操作
Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名,每一行也可 ...
- 在Winform开发框架中,利用DevExpress控件实现数据的快速录入和选择
在实际的项目开发过程中,有好的控件或者功能模块,我都是想办法尽可能集成到我的WInform开发框架中,这样后面开发项目起来,就可以节省很多研究时间,并能重复使用,非常高效方便.在我很早之前的一篇博客& ...
- R学习笔记 第三篇:数据框
数据框(data.frame)用于存储二维表(即关系表)的数据,每一列存储的数据类型必须相同,不同的数据列的数据类型可以相同,也可以不同,但是,每列的长度必须相同.数据框的每列可以有唯一的命名,在已创 ...
- 多个PVSS数据点属性读写的优化处理
注:本译文出自15多年前,尚未用最新软硬件平台进行重新测试,只提供方法论层面的参考,具体性能指标不具备参考意义. 多个PVSS数据点属性读写的优化处理 本文档概述了测试三种读取和写入多个PVSS数据点 ...
- R语言学习 第三篇:数据框
数据框(data.frame)是最常用的数据结构,用于存储二维表(即关系表)的数据,每一列存储的数据类型必须相同,不同数据列的数据类型可以相同,也可以不同,但是每列的行数(长度)必须相同.数据框的每列 ...
随机推荐
- [BinaryTree] 二叉树常考知识点
1.二叉树第i层至多有2^(i-1)个结点(i>=1). 2.深度为k的二叉树上,至多含2^k-1个结点(k>=1) 3.n0 = n2 + 1(度) 4.满二叉树:深度为k且含有2^k- ...
- linux下面Zookeeper的单机模式(standalone)
1.下载 zk下载地址 http://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 我用的是http://mirrors.tuna.tsinghua.e ...
- 【EF】EF Code-First数据迁移
Code-First数据迁移 首先要通过NuGet将EF升级至最新版本. 新建MVC 4项目MvcMigrationDemo 添加数据模型 Person 和 Department,定义如下: usi ...
- BZOJ 1266 上学路线(最短路+最小割)
给出n个点的无向图,每条边有两个属性,边权和代价. 第一问求1-n的最短路.第二问求用最小的代价删边使得最短路的距离变大. 对于第二问.显然该删除的是出现在最短路径上的边.如果我们将图用最短路跑一遍预 ...
- 《Node入门》读书笔记——用Node.js开发一个小应用
Android APP的开发告一段落,一个稳定的.实现了基本功能的APP已经交付用户使用了!我和老板交流了下,接下来准备转战Node.js了,而且一部分前端的功能也要做进去!哈哈哈~~~接下来要朝一个 ...
- 【BZOJ4802】欧拉函数(Pollard_rho)
[BZOJ4802]欧拉函数(Pollard_rho) 题面 BZOJ 题解 这么大的范围肯定不好杜教筛. 考虑欧拉函数的计算式,显然只需要把\(n\)分解就好了. 直接\(Pollard\_rho\ ...
- 【BZOJ3243】【NOI2013】向量内积(矩阵,数论)
[BZOJ3243][NOI2013]向量内积(矩阵,数论) 题面 BZOJ 题解 这题好神仙. 首先\(60\)分直接是送的.加点随机之类的可以多得点分. 考虑正解. 我们先考虑一下暴力. 我们把\ ...
- 【BZOJ3566】概率充电器(动态规划)
[BZOJ3566]概率充电器(动态规划) 题面 BZOJ Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: "采用全新纳米级加工 ...
- BZOJ1072 排列perm 【状压dp】
Description 给一个数字串s和正整数d, 统计s有多少种不同的排列能被d整除(可以有前导0).例如123434有90种排列能 被2整除,其中末位为2的有30种,末位为4的有60种. Inpu ...
- HDU.1556 Color the ball (线段树 区间更新 单点查询)
HDU.1556 Color the ball (线段树 区间更新 单点查询) 题意分析 注意一下pushdown 和 pushup 模板类的题还真不能自己套啊,手写一遍才行 代码总览 #includ ...