爱了爱了!0.052 秒打开 100GB 数据,这个Python开源库火爆了!

❤️Python【Vaex】保姆式教程❤️ 一、Vaex介绍 Vaex是一种更快、更安全、总体上更方便的方法,可以使用几乎任意大小的数据进行数据研究分析,只要它能够适用于笔记本电脑、台式机或服务器的硬盘驱动器。 Vaex是一个开源的DataFrame库,它可以对表格数据集进行可视化、探索、分析,甚至机器学习,这些数据集和你的硬盘驱动器一样大。它可以在一个n维网格上每秒计算超过10亿(10^9)个对象的平均值、和、计数、标准差等统计信息。可视化使用直方图、使用直方图、密度图和3D立体渲染进行可视化。为此,Vaex采用了内存映射、高效的外核算法和延迟计 阅读详情


编译 | AI科技大本营(ID:rgznai100)

许多组织都在尝试收集和利用尽可能多的数据,以改善其经营方式,增加收入和提升影响力。因此,数据科学家面对50GB甚至500GB大小的数据集情况变得越来越普遍。

 

不过,这类数据集使用起来不太容易。它们足够小,可以装入日常笔记本电脑的硬盘驱动器中,但同时大到无法装入RAM,导致它们已经很难打开和检查,更不用说探索或分析了。

 

处理此类数据集时,通常采用3种策略。

 

第一种是对数据进行二次采样,但缺点很明显:你可能因为忽视相关部分数据而错过关键洞察,甚至更糟的是,这会误解了数据所阐释的含义。

 

第二种策略是使用分布式计算。在某些情况下这是一种有效的方法,但它需要管理和维护集群的大量开销。

 

又或者,你可以租用一个强大的云实例,该实例具有处理相关数据所需的内存。例如,AWS提供具有TB级RAM的实例。在这种情况下,你仍然必须管理云数据存储区,每次实例启动时,都需要等待数据从存储空间传输到实例,同时,还要考虑将数据存储在云上的合规性问题,以及在远程计算机上工作带来的不便。更不别说成本,尽管一开始成本很低,但后续往往会增加。

 

Vaex是解决这个问题的新方法。它是一种几乎可以对任意大小的数据进行数据科学研究的更快、更安全、更方便的方法,只要数据集可以安装在你的笔记本电脑,台式机或服务器硬盘上。

什么是Vaex?

 

Vaex 是一个开源的 DataFrame 库(类似于Pandas),对和你硬盘空间一样大小的表格数据集,它可以有效进行可视化、探索、分析甚至进行实践机器学习。

 

它可以在N维网格上计算每秒超过十亿(10^9)个对象/行的统计信息,例如均值、总和、计数、标准差等 。使用直方图、密度图和三维体绘制完成可视化,从而可以交互式探索大数据。Vaex使用内存映射、零内存复制策略获得最佳性能(不浪费内存)。

 

为实现这些功能,Vaex 采用内存映射、高效的核外算法和延迟计算等概念。所有这些都封装为类 Pandas 的 API,因此,任何人都能快速上手。

 

十亿级计程车的数据分析

为了说明这一概念,让我们对一个数据集进行简单的探索性数据分析,该数据集并不适合典型笔记本电脑的RAM。

 

本文中将使用纽约市(NYC)出租车数据集,其中包含标志性的黄色出租车在2009年至2015年之间进行的超过10亿次出行的信息。数据可以从网站(https://www1.nyc.gov/site/tlc/about/tlc-trip-record-data.page)下载,并且为CSV格式。完整的分析可以在此Jupyter笔记本中单独查看(https://nbviewer.jupyter.org/github/vaexio/vaex-examples/blob/master/medium-nyc-taxi-data-eda/vaex-taxi-article.ipynb)。

为什么要选择vaex?

  • 性能:处理海量表格数据,每秒处理超过十亿行

  • 虚拟列:动态计算,不浪费内存

  • 高效的内存在执行过滤/选择/子集时没有内存副本。

  • 可视化:直接支持,单线通常就足够了。

  • 用户友好的API:只需处理一个数据集对象,制表符补全和docstring可以帮助你:ds.mean<tab>,类似于Pandas。

  • 精益:分成多个包

  • Jupyter集成:vaex-jupyter将在Jupyter笔记本和Jupyter实验室中提供交互式可视化和选择。

 

第一步是将数据转换为内存可映射文件格式,例如Apache Arrow,Apache Parquet或HDF5。在此处也可以找到如何将CSV数据转换为HDF5的示例。数据变为内存可映射格式后,即使在磁盘上的大小超过100GB,也可以使用Vaex即时打开(只需0.052秒!):

为什么这么快?当使用Vaex打开内存映射文件时,实际上没有进行任何数据读取。Vaex仅读取文件的元数据,例如磁盘上数据的位置,数据结构(行数、列数、列名和类型),文件说明等。那么,如果我们要检查数据或与数据交互怎么办?打开数据集会生成一个标准的DataFrame并对其进行快速检查:

注意,单元执行时间太短了。这是因为显示Vaex DataFrame或列仅需要从磁盘读取前后5行数据。这将我们引向另一个重点:Vaex只会在需要时遍历整个数据集,并且会尝试通过尽可能少的数据传递来做到这一点。

无论如何,让我们从极端异常值或错误数据输入值开始清除此数据集。一个很好的方法是使用describe方法对数据进行高级概述,其中显示了样本数、缺失值数和每一列的数据类型。如果列的数据类型为数字,则还将显示平均值、标准偏差以及最小值和最大值。所有这些统计信息都是通过对数据的一次传递来计算的。

使用describe方法获得 DataFrame 的高级概览,注意这个 DataFrame 包含 18 列数据,不过截图只展示了前 7 列。

该describe方法很好地体现了Vaex的功能和效率:所有这些统计数据都是在我的MacBook Pro(2018款15英寸,2.6GHz Intel Core i7,32GB RAM)上用不到3分钟的时间计算出来的。其他库或方法都需要分布式计算或拥有超过100GB的云实例来执行相同的计算。而使用Vaex,你所需要的只是数据,以及只有几GB RAM的笔记本电脑。

查看describe的输出,很容易注意到数据包含一些严重的异常值。

首先开始检查上车地点。消除异常值的最简单方法是简单地绘制上下车地点的位置,并直观地定义我们要集中分析的NYC区域。由于我们正在使用如此大的数据集,因此直方图是最有效的可视化效果。使用Vaex创建和显示直方图和热力图的速度很快,而且图表可以交互!

一旦我们通过交互决定要关注的NYC区域,就可以简单地创建一个筛选后的DataFrame: 

关于上面的代码,最酷的事情是它需要执行的内存量可以忽略不计!在筛选Vaex DataFrame时不会复制数据,而是仅创建对原始对象的引用,在该引用上应用二进制掩码。用掩码选择要显示的行,并将其用于将来的计算。这将为我们节省100GB的RAM,而像今天许多标准数据科学工具却要复制数据。

现在,检查一下该passenger_count列。单次出租车行程记录的最大乘客数为255,这似乎有些夸张。计算每次行程的乘客人数,使用以下value_counts方法很容易做到这一点:

在 10 亿行数据上使用 value_counts 方法只需要 20 秒

从上图可以看出,载客超过6人的行程可能是罕见的异常值,或者仅仅是错误的数据输入,还有大量的0位乘客的行程。由于目前我们尚不了解这些行程是否合法,因此我们也将其过滤掉。  

让我们对行程距离进行类似的练习。由于这是一个连续变量,因此我们可以绘制行程距离的分布图。让我们绘制一个更合理范围的直方图。

纽约出租车数据行程距离直方图

从上图可以看出,出行次数随着距离的增加而减少。在距离约100英里处,分布有明显下降。目前,我们将以此为起点,根据行程距离消除极端离群值:

出行距离一列中存在极端异常值,这也是研究出行时间和出租车平均速度的动机。这些功能在数据集中尚不可用,但计算起来很简单:

上面的代码块无需内存,无需花费时间即可执行!这是因为代码只会创建虚拟列。这些列仅包含数学表达式,并且仅在需要时才进行评估。此外,虚拟列的行为与任何其他常规列都相同。注意,其他标准库将需要10 GB的RAM才能进行相同的操作。

好了,让我们来绘制行程耗费时间的分布:

纽约超过 10 亿次出租车行程耗费时间的直方图

从上面的图中可以看出,尽管有一些行程可能需要花费4至5个小时,但95%的出租车花费不到30分钟即可到达目的地。你能想象在纽约市被困出租车中超过3个小时吗?无论如何,我们要保持开放的态度,并考虑所有花费时间少于3小时的行程:

现在,让我们研究出租车的平均速度,同时选择一个合理的数据范围:

出租车平均速度分布

根据分布趋平的位置,我们可以推断出在每小时1到60英里之间合理的平均滑行速度,因此可以更新筛选后的DataFrame:

将重点转移到出租车费用上。从describe方法的输出中,我们可以看到在fare_amount,total_amount和tip_amount列中有一些疯狂的异常值。对于初学者,任何这些列中的任何值都不应为负。同时数字表明,一些幸运的司机仅凭开一次出租车便几乎成为了百万富翁。让我们看一下在相对合理的范围内这些数量的分布:

纽约超过 10 亿次出租车行程的车费、总额和小费的分布。在笔记本上绘制这些图表只用了 31 秒!

我们看到上述所有三个分布都有相当长的尾部。尾部的某些值可能是合法的,而其他值可能是错误的数据输入。无论如何,让我们先保守下,只考虑fare_amount,total_amount和tip_amount少于$200的行程。我们还要求fare_amount,total_amount值大于$0。

最后,在初步清理完所有数据之后,让我们看看有多少出租车数据需要进行分析:

还有超过11亿次旅行!大量的数据可以使你深入了解出租车行程背后的信息。

后记

此外,作者还从出租车司机最大化利润等角度利用Vaex进行分析数据。总之,Vaex会帮你缓解可能面临的一些数据挑战的问题。

有了 Vaex,你可以在短短几秒内遍历超过 10 亿行数据,计算各种统计、聚合并产出信息图表,这一切都能在你的笔记本电脑上完成。它免费且开源。

如果你对探索本文中用到的数据集感兴趣,可以直接在 S3 中配合 Vaex 使用它,请参阅完整的 Jupyter notebook 了解如何实现。

Vaex 官方网站:https://vaex.io/  

文档:https://docs.vaex.io/ 

GitHub:https : //github.com/vaexio/vaex 

PyPi:https://pypi.python.org/pypi/vaex/

文末福利
各位猿们,还在为记不住API发愁吗,哈哈哈,最近发现了国外大师整理了一份Python代码速查表和Pycharm快捷键sheet,火爆国外,这里分享给大家。


这个是一份Python代码速查表



下面的宝藏图片是2张(windows && Mac)高清的PyCharm快捷键一览图



怎样获取呢?可以添加我们的AI派团队的程序媛姐姐
一定要备注【高清图】哦
????????????????????

➕我们的程序媛小姐姐微信要记得备注【高清图】哦
来都来了,喜欢的话就请分享、点赞、在看三连再走吧~~~




使用 Vaex 处理具有 2 亿行的数据集 在这篇文章中,我们生成了 2 亿条时序人工数据,有 4 列,大小接近 12GB。使用 Pandas 库无法读取数据集并对其进行探索和可视化。 阅读详情

相关推荐

Vaex——一个开源的DataFrame库,它可以对表格数据集进行可视化、探索、分析,甚至机器学习

**Vaex是一个开源的DataFrame库**,它可以对表格数据集进行**可视化、探索、分析,甚至机器学习**,这些数据集和你的硬盘驱动器一样大。**它可以在一个n维网格上每秒计算超过10亿(10^9)个对象的平均值、和、计数、标准差等统计信息**。可视化使用直方图、使用直方图、密度图和3D立体渲染进行可视化。为此,**Vaex采用了内存映射、高效的外核算法和延迟计算等概念来获得最佳性能(不浪费内存)**。 本文是上述介绍的.md笔记档,为一个刚好超出RAM范围(如50GB甚至500GB的数据集)的数据集做分析,又不能破费成本的设置一个集群, Vaex作为一个开源的DataFrame库,带来了解决方案!例子是使用纽约市出租车的数据集。

vaex 处理海量数据_震惊! 居然可以用python在短短几秒内处理几十亿数据!

最近一个偶然的机会,我发现了一个可以在短短几秒内处理几十亿数据的python工具包:Vaex, 处于好奇我研究了一下Vaex,下面给大家简单介绍一下Vaex及其基本使用方法。Vaex是什么Vaex是用于惰性核心数据框架(类似于Pandas)的python库,用于可视化和探索大型表格数据集。它可以在N维表格上计算统计数据,例如均值,总和,计数,标准差等,最大可达十亿(109109)每秒的对象/行数。...

weixin_39637370的博客 1984

环境配置 |Jupyter lab/Jupyter Notebook 安装与设置

ipynb使用Jupyterlab/Jupyter Notebook 来编写程序时的文件,在使用时,可以现转换为标准的.py的python文件。

weixin_44649780的博客 5775

Vaex,一个超酷的 Python 库!

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。方法进行自定义计算,这在处理复杂的数据操作时非常有用。

Trb201012的博客 1499

MATLAB锂离子电池伪二维(P2D)模型实现

锂离子电池伪二维(P2D)模型的MATLAB实现。该模型基于Newman等人提出的经典电化学模型,考虑了固液相扩散、电荷守恒和电化学反应动力学。

hie98894的博客 1932

基于ESP32的摩托车蓝牙对讲系统开发实践

蓝牙音频传输技术在现代通信中扮演着重要角色,其核心原理是通过无线射频实现数字音频信号的双向传输。在工程实践中,蓝牙HFP协议常用于语音通信场景,而ESP32等嵌入式平台因其低成本和高集成度成为DIY项目的理想选择。本项目通过ESP32-WROOM-32D开发板结合PCM5102 DAC和INMP441数字麦克风等模块,构建了一套摩托车骑行专用的蓝牙对讲系统。该系统特别针对高速移动环境下的风噪抑制和连接稳定性进行了优化,采用数字信号处理技术实现实时降噪,并通过I2S接口确保音频质量。这种方案不仅成本控制在30

weixin_33239721的博客 414

爱了爱了!0.052秒打开100GB数据,这个Python开源库火爆了!

点击 机器学习算法与Python学习 ,选择加星标精彩内容不迷路编译|AI科技大本营(ID:rgznai100)文末有送书福利许多组织都在尝试收集和利用尽可能多的数据,以改善其经营方...

机器学习算法与Python学习 590

深入解析MTK DRM初始化流程:从KMS模块到组件框架

本文深入解析了联发科(MTK)平台上DRM显示框架的初始化流程。从内核模块加载、Component框架管理依赖,到核心的mtk_drm_bind函数构建KMS对象(CRTC、Plane、Encoder、Connector),最终完成DRM设备注册并创建用户空间接口。文章结合调试经验,为开发者梳理了从驱动启动到屏幕点亮的完整路径与关键排查点。

onion的博客 769

爱了爱了!0.052 秒打开 100GB 数据,这个 Python 开源库火爆了!

“ 阅读本文大概需要 3 分钟。 ”编译|AI 科技大本营(ID:rgznai100)许多组织都在尝试收集和利用尽可能多的数据,以改善其经营方式,增加收入和提升影响力。因此,数据科学...

静觅 280

TI C2000 DSP CLA实战:用F28069的协处理器实现ADC采样与PWM相位实时联动控制

本文详细介绍了如何利用TI C2000系列DSP的CLA协处理器在TMS320F28069上实现ADC采样与PWM相位的实时联动控制。通过CLA的零周期上下文切换和硬件级任务触发特性,显著提升了电机控制和数字电源应用的实时性能,特别适用于需要亚微秒级响应的场景。

weixin_30932215的博客 3968

【保姆级教程】基于UNet++&MobileNetv3的语义分割模型从训练到RK3588部署:让边缘AI落地效率提升300%

通过SMP库一键构建encoder_name="mobilenet_v2", # 选择MobileNetv3作为骨干encoder_weights="imagenet", # 加载预训练权重加速收敛in_channels=3, # 输入图像通道数(RGB)classes=29, # Cityscapes数据集类别数activation=None # 输出无激活,便于后续损失计算本教程从“模型设计-训练-转换-边缘部署”全链路拆解了。

FJN110的博客 257

爱python的胖虾_爱了爱了!0.052 秒打开 100GB 数据,这个Python开源库火爆了!

原标题:爱了爱了!0.052 秒打开 100GB 数据,这个Python开源库火爆了! 编译 | AI科技大本营(ID:rgznai100)许多组织都在尝试收集和利用尽可能多的数据,以改善其经营方式,增加收入和提升影响力。因此,数据科学家面对50GB甚至500GB大小的数据集情况变得越来越普遍。不过,这类数据集使用起来不太容易。它们足够小,可以装入日常笔记本电脑的硬盘驱动器中,但同时大到无法装入R...

weixin_39931146的博客 97

在 NVIDIA DGX Spark 上运行 vLLM + Open WebUI

DGX Spark 和 GX10 都是性能强大的机器,但只有将它们视为交互式工作站而非精简版服务器,才能真正发挥它们的优势。合理利用共享资源,规划并发工作负载,并谨慎控制内存限制。做到这些,vLLM 与 Open WebUI 的结合就能成为可靠​​的日常工具,而不是脆弱的实验品。DGX平台本身价格不菲,但这并非体验此类硬件的唯一途径。多家厂商提供基于相同核心架构、价格更为亲民的系统,这些系统通常配备容量较小的固态硬盘或配置更为简化,但基本性能并未改变。

iCloudEnd的博客 1752

vaex 处理海量数据_爱了爱了!0.052 秒打开 100GB 数据,这个Python开源库火爆了!...

原标题:爱了爱了!0.052 秒打开 100GB 数据,这个Python开源库火爆了! 编译 | AI科技大本营(ID:rgznai100)许多组织都在尝试收集和利用尽可能多的数据,以改善其经营方式,增加收入和提升影响力。因此,数据科学家面对50GB甚至500GB大小的数据集情况变得越来越普遍。不过,这类数据集使用起来不太容易。它们足够小,可以装入日常笔记本电脑的硬盘驱动器中,但同时大到无法装入R...

weixin_39619433的博客 96

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

5秒内按任意键跳过磁盘检查_爱了爱了!0.052秒打开100GB数据,这个Python开源库火爆了!...

点击上方“Python编程时光”,选择“加为星标”第一时间关注Python技术干货!许多组织都在尝试收集和利用尽可能多的数据,以改善其经营方式,增加收入和提升影响力。因此,数据科学家面对50GB甚至500GB大小的数据集情况变得越来越普遍。不过,这类数据集使用起来不太容易。它们足够小,可以装入日常笔记本电脑的硬盘驱动器中,但同时大到无法装入RAM,导致它们已经很难打开和检查,更不用说探索...

weixin_39780260的博客 1224

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

5秒内按任意键跳过磁盘检查_爱了爱了!0.052 秒打开 100GB 数据,这个Python开源库火爆了!...

编译|AI科技大本营(ID:rgznai100)许多组织都在尝试收集和利用尽可能多的数据,以改善其经营方式,增加收入和提升影响力。因此,数据科学家面对50GB甚至500GB大小的数据集情况变得越来越普遍。不过,这类数据集使用起来不太容易。它们足够小,可以装入日常笔记本电脑的硬盘驱动器中,但同时大到无法装入RAM,导致它们已经很难打开和检查,更不用说探索或分析了。处理此类数据集时,...

weixin_39585795的博客 1067
上一篇: 炸!史上最快网盘:83MB/s!速抢全网公测名额,送 2T 空间!
下一篇: 美团外卖流量数据的采集加工和应用
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值