什么是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包你值得拥有。

参考文章:

本文由雪晴数据网编辑整理。转载请注明本文链接http://www.xueqing.tv/cms/article/210

Feather包实现数据框快速读写,你值得拥有的更多相关文章

  1. R语言数据分析利器data.table包 —— 数据框结构处理精讲

        R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理 ...

  2. 通过 sqldf 包使用 SQL 查询数据框

    在前面的章节中,我们学习了如何编写 SQL 语句,在关系型数据库(如 SQLite 和MySQL )中查询数据.我们可能会想,有没有一种方法,能够直接使用 SQL 进行数据框查询,就像数据框是关系型数 ...

  3. R语言数据分析利器data.table包—数据框结构处理精讲

    R语言数据分析利器data.table包-数据框结构处理精讲 R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代 ...

  4. Python基础 | 数据文件的读写

    目录 txt txt的读入 txt的写出 csv xls\xlsx 在线网页数据 常用的工具 爬虫的步骤 pdf pdfrw PyPDF2 提取文档信息 word文档 其他统计软件生成文件 本文总结使 ...

  5. R语言Data Frame数据框常用操作

    Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名,每一行也可 ...

  6. 在Winform开发框架中,利用DevExpress控件实现数据的快速录入和选择

    在实际的项目开发过程中,有好的控件或者功能模块,我都是想办法尽可能集成到我的WInform开发框架中,这样后面开发项目起来,就可以节省很多研究时间,并能重复使用,非常高效方便.在我很早之前的一篇博客& ...

  7. R学习笔记 第三篇:数据框

    数据框(data.frame)用于存储二维表(即关系表)的数据,每一列存储的数据类型必须相同,不同的数据列的数据类型可以相同,也可以不同,但是,每列的长度必须相同.数据框的每列可以有唯一的命名,在已创 ...

  8. 多个PVSS数据点属性读写的优化处理

    注:本译文出自15多年前,尚未用最新软硬件平台进行重新测试,只提供方法论层面的参考,具体性能指标不具备参考意义. 多个PVSS数据点属性读写的优化处理 本文档概述了测试三种读取和写入多个PVSS数据点 ...

  9. R语言学习 第三篇:数据框

    数据框(data.frame)是最常用的数据结构,用于存储二维表(即关系表)的数据,每一列存储的数据类型必须相同,不同数据列的数据类型可以相同,也可以不同,但是每列的行数(长度)必须相同.数据框的每列 ...

随机推荐

  1. ADB抓取日志和日志过滤

    建议抓取日志之前先清除缓存的log数据:adb logcat -c 网上有人介绍可以这样写:adb logcat -c && adb logcat 1.使用V.D.I.W.E.F.S优 ...

  2. 采用FPGA实现UART转SPI

    应用笔记 V1.1 2015/2/10 采用FPGA实现UART转SPI   概述   本文提供了实现UART转SPI的Verilog代码的功能描述.这份笔记将介绍UART和SPI的基本知识,代码设计 ...

  3. lxm --- ans lb config

    lxm --- ans lb config #ANS2.2 Build 160.006 # Last modified by `save config`, Fri Oct 12 17:15:42 20 ...

  4. Spring中使用要点集合

    1.InitializingBean和init-method方法 Spring的InitializingBean为bean提供了定义初始化方法的方式.InitializingBean是一个接口,它仅仅 ...

  5. 【NOIP2017】宝藏(状态压缩,动态规划)

    [NOIP2017]宝藏(状态压缩,动态规划) 题面 洛谷 题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋, 也给出了这 n 个宝藏屋之间可供开发的 m 条道路 ...

  6. 后渗透提权辅助工具BeRoot详解

    0x00 工具介绍 前言 BeRoot是一个后期开发工具,用于检查常见的Windows的配置错误,以方便找到提高我们提权的方法.其二进制编译地址为: https://github.com/Alessa ...

  7. hadoop(三)HDFS基础使用

    一.HDFS前言 1. 设计思想          分而治之:将大文件,大批量文件,分布式的存放于大量服务器上.以便于采取分而治之的方式对海量数据进行运算分析     2. 在大数据系统架构中的应用  ...

  8. bzoj3192: [JLOI2013]删除物品(树状数组)

    既然要从一个堆的堆顶按顺序拿出来放到第二个堆的堆顶,那么我们就可以把两个堆顶怼在一起,这样从一个堆拿到另一个堆只需要移动指针就好了. 换句话说,把1~n倒着,n+1到n+m正着,用一个指针把两个序列分 ...

  9. Xml中SelectSingleNode方法,xpath查找某节点用法

    Xml中SelectSingleNode方法,xpath查找某节点用法 最常见的XML数据类型有:Element, Attribute,Comment, Text. Element, 指形如<N ...

  10. poj3469 Dual Core CPU

    Dual Core CPU Time Limit: 15000MS   Memory Limit: 131072K Total Submissions: 25576   Accepted: 11033 ...