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

转载于:https://www.cnblogs.com/100thMountain/p/5517146.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文教你学会需求分析与管理

大家好,我是孙叫兽,本期给大家分享需求分析与管理,在项目开始或者需求整理时,这方面的知识显得尤为重要,常言道:良好的开始是成功的一半! 1.需求的定义 产品需求是在一定的时期,一定的场景中,无论是心理上还是生理上的,用户有着某种“需要”,这种“需要”用户自己不…

java 编写代码_Java 7:如何编写非常快速的Java代码

java 编写代码当我第一次写此博客时&#xff0c;我的目的是向您介绍ThreadLocalRandom类&#xff0c;它是Java 7中新增的用于生成随机数的类。 我在一系列微基准测试中分析了ThreadLocalRandom的性能&#xff0c;以了解其在单线程环境中的性能。 结果相对令人惊讶&#xff1a;尽…

POJ 1172 DFS

&#xff08;感谢wzc学长的幻灯片&#xff09; 单组数据 注意从必经点能到标记过的点则此点不是分裂点。 //By: Sirius_Ren #include <cstdio> #include <queue> #include <cstring> using namespace std; int tot1,first[51],cnt,v[101],nxt[101],n,vis[51…

文件夹或者文件比对工具 Beyond Compare

文件夹或者文件比对工具 Beyond Compare 之前有同事离职了。 没有工作交接。 同事的代码有一部分也没有提交版本库。 结果就是线上的代码和版本库中的文件数量和代码内容不一致。 这时就需要进行两方比对&#xff0c;查找不一致的地方。 如果人工…

Lucene查询(搜索)语法示例

本文是我们名为“ Apache Lucene基础知识 ”的学院课程的一部分。 在本课程中&#xff0c;您将了解Lucene。 您将了解为什么这样的库很重要&#xff0c;然后了解Lucene中搜索的工作方式。 此外&#xff0c;您将学习如何将Lucene Search集成到您自己的应用程序中&#xff0c;以…

远程桌面在自己电脑显示很小的解决办法

背景:最近在某银行办公,使用的是云桌面,疫情期间有一周是在加班办公,使用自己的电脑登录云桌面,然后电脑屏幕显示云桌面很小,看文档及代码十分难受。问问同事,这个问题终于得到了解决。 显示如下: 这个云桌面在我电脑就显示2/3宽度的大小,看代码太难受了,排除右上角向…

《JavaScript100例|01》之javaScript实现俄罗斯方块,唤起了女朋友儿时的回忆!

导读&#xff1a;小时候我们经常打游戏玩俄罗斯方块&#xff0c;用的是游戏机。 现在我们学会了敲代码&#xff0c;简单用JS实现一下这个游戏把。 目录 先看效果 操作说明 代码实现 完整代码 先看效果 操作说明 打开编译器&#xff0c;讲代码复制进去&#xff0c;在浏览…

JBOSS内存溢出处理

JBOSS内存溢出处理 前几天公司一个项目的服务器坏了&#xff0c;就换了一个备份服务器顶替一下&#xff0c;但是没有跑一会就宕机了&#xff0c;一直报java.lang.OutOfMemoryError。。。。一看到这里&#xff0c;就知道是内存溢出&#xff0c;但是JBoss的内存配置已经达到1024M…

linux命令之seq

seq命令简述 seq命令比较常用&#xff0c;在需要做循环的时候用于产生一个序列是再合适不过的工具了&#xff0c;常用方法也比较简单&#xff1a;Usage:seq [OPTION]... LASTseq [OPTION]... FIRST LASTseq [OPTION]... FIRST INCREMENT LASTPrint numbers from FIRST to LAST,…

史上最全高级Java教程总结版(强烈建议收藏)

本篇文章主要用于分享java相关的视频,课程等,涉及面比较广,建议先收藏再慢慢观看,信息量比较大。适合新手,老手各阶段Java程序员。 订阅本专栏 《高级java教程系列》 的福利! 目录 java知识体系列表 面试题库 java各知识点综合面试题

adf4351使用_ADF:将UI类别与动态表单一起使用

adf4351使用JDev 11g R2具有有趣的新功能“ UI类别”。 它使我们可以在视图对象定义级别上以声明方式对VO的属性进行分组。 例如&#xff0c;我的VEmployees视图对象的“ UI Categories”选项卡如下所示&#xff1a; 默认情况下&#xff0c;每个视图对象都有一个预定义的类别“…

使用JavaScript将小写金额转化为大写金额的两种常见方法

导读:在一些支付或者银行确认信息中经常需要将小写金额转换为大写金额,这里做一下归纳, 目录 效果图: 方法一:使用正则表达式 方法二:常规JavaScript实现 效果图: 前面小写,后面大写,这里使用vue测试,其它框架同理.小写是传值的字段money,大写直接调用函数dealBigMoney(money…

h5-列表

<header> <!-- a,div,header,span {-webkit-tap-highlight-color: rgba(255, 255, 255, 0); /*修改a、input和button点击时的蓝色外边框和灰色半透明背景*/ } --><div class"header"> <!-- .header {height: 44px;background: #ff8200;position…

什么是突变测试?

最近&#xff0c;我反复提到“ 突变测试 ”一词。 因为可以说这种方法能够以超出代码覆盖范围的方式检测测试安全网的空白&#xff0c;所以我花了一些时间来追赶这个话题&#xff0c;然后尝试一下。 这篇文章总结了我的发现&#xff0c;作为对该主题的快速介绍。 什么是变异测…

JavaScript数组常用的方法总结

导读&#xff1a;在实际开发中&#xff0c;前端工程师除了写页面布局及样式还要对后端返回的数据进行处理&#xff0c;返回的数据大多数是json格式&#xff0c;一般都是返回一个对象或者数组&#xff0c;下面对常用的数组的使用方法进行总结&#xff0c;方便在开发中手到擒来&a…

Python黑魔法,一行实现并行化

Python 在程序并行化方面多少有些声名狼藉。撇开技术上的问题&#xff0c;例如线程的实现和 GIL&#xff0c;我觉得错误的教学指导才是主要问题。常见的经典 Python 多线程、多进程教程多显得偏“重”。而且往往隔靴搔痒&#xff0c;没有深入探讨日常工作中最有用的内容。 传统…

javaScript对账号卡号进行脱敏处理

导读&#xff1a;一般8位以上账号&#xff0c;显示首尾各4位&#xff0c;中间固定用8位*代替&#xff1b;8位及以下账号&#xff0c;显示首尾各2位&#xff0c;中间固定用8位*代替。 这里简单处理一下16位及以上的账号&#xff0c;卡号&#xff0c;其它的情况同理&#xff0c; …

2. python 参数个数可变的函数

如果想要定义一个参数个数不确定的函数&#xff0c; 可以通过*args,**kwargs实现&#xff1a; *args的使用&#xff1a; **kwargs的使用&#xff1a; 二者的混合使用&#xff1a; 另外还有一些关于调用函数时候的时候常用的技巧&#xff1a; 其和是等价的。 其和是等价的 当然也…

JavaScript常用工具类整理(总结版)

导读&#xff1a;在前端开发过程中需要对常用的功能模块进行封装&#xff0c;常用的方法多次调用需要整合&#xff0c;保证组件的复用性与程序的可维护性&#xff0c;这里总结一下&#xff0c;便于后续的使用&#xff01; 目录 1.全局声明工具类 2.定时器 3.判断变量是否是一…