Vaex :突破pandas,快速分析100GB大数据集

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: Vaex :突破pandas,快速分析100GB大数据集

pandas处理大数据的限制

现在的数据科学比赛提供的数据量越来越大,动不动几十个GB,甚至上百GB,这就要考验机器性能和数据处理能力。

Python中的pandas是大家常用的数据处理工具,能应付较大数据集(千万行级别),但当数据量达到十亿百亿行级别,pandas处理起来就有点力不从心了,可以说非常的慢。

这里面会有电脑内存等性能的因素,但pandas本身的数据处理机制(依赖内存)也限制了它处理大数据的能力。

当然pandas可以通过chunk分批读取数据,但是这样的劣势在于数据处理较复杂,而且每一步分析都会消耗内存和时间。

下面用pandas读取3.7个GB的数据集(hdf5格式),该数据集共有4列、1亿行,并且计算第一行的平均值。我的电脑CPU是i7-8550U,内存8GB,看看这个加载和计算过程需要花费多少时间。

数据集:

使用pandas读取并计算:

看上面的过程,加载数据用了15秒,平均值计算用了3.5秒,总共18.5秒。

这里用的是hdf5文件,hdf5是一种文件存储格式,相比较csv更适合存储大数据量,压缩程度高,而且读取、写入也更快。

换上今天的主角vaex,读取同样的数据,做同样的平均值计算,需要多少时间呢?

使用vaex读取并计算:

文件读取用了9ms,可以忽略不计,平均值计算用了1s,总共1s。

同样是读取1亿行的hdfs数据集,为什么pandas需要十几秒,而vaex耗费时间接近于0呢?

这里主要是因为pandas把数据读取到了内存中,然后用于处理和计算。而vaex只会对数据进行内存映射,而不是真的读取数据到内存中,这个和spark的懒加载是一样的,在使用的时候 才会去加载,声明的时候不加载。

所以说不管加载多大的数据,10GB、100GB...对vaex来说都是瞬间搞定。美中不足的是,vaex的懒加载只支持HDF5, Apache Arrow,Parquet, FITS等文件,不支持csv等文本文件,因为文本文件没办法进行内存映射。

可能有的小伙伴不太理解内存映射,下面放一段解释,具体要弄清楚还得自行摸索:

内存映射是指硬盘上文件的位置与进程逻辑地址空间中一块大小相同的区域之间的一一对应。这种对应关系纯属是逻辑上的概念,物理上是不存在的,原因是进程的逻辑地址空间本身就是不存在的。在内存映射的过程中,并没有实际的数据拷贝,文件没有被载入内存,只是逻辑上被放入了内存,具体到代码,就是建立并初始化了相关的数据结构(struct address_space)。

什么是vaex?

前面对比了vaex和pandas处理大数据的速度,vaex优势明显。虽然能力出众,不比pandas家喻户晓,vaex还是个刚出圈的新人。

vaex同样是基于python的数据处理第三方库,使用pip就可以安装。

官网对vaex的介绍可以总结为三点:

  1. vaex是一个用处理、展示数据的数据表工具,类似pandas;
  2. vaex采取内存映射、惰性计算,不占用内存,适合处理大数据;
  3. vaex可以在百亿级数据集上进行秒级的统计分析和可视化展示;

vaex的优势在于:

  1. 性能:处理海量数据,  行/秒;
  2. 惰性:快速计算,不占用内存;
  3. 零内存复制:在进行过滤/转换/计算时,不复制内存,在需要时进行流式传输;
  4. 可视化:内含可视化组件;
  5. API:类似pandas,拥有丰富的数据处理和计算函数;
  6. 可交互:配合Jupyter notebook使用,灵活的交互可视化;

安装vaex

使用pip或者conda进行安装:

读取数据

vaex支持读取hdf5、csv、parquet等文件,使用read方法。hdf5可以惰性读取,而csv只能读到内存中。

vaex数据读取函数:

数据处理

有时候我们需要对数据进行各种各样的转换、筛选、计算等,pandas的每一步处理都会消耗内存,而且时间成本高。除非说使用链式处理,但那样过程就很不清晰。

vaex则全过程都是零内存。因为它的处理过程仅仅产生expression(表达式),表达式是逻辑表示,不会执行,只有到了最后的生成结果阶段才会执行。而且整个过程数据是流式传输,不会产生内存积压。

可以看到上面有筛选和计算两个过程,都没有复制内存,这里采用了延迟计算,也就是惰性机制。如果每个过程都真实计算,消耗内存不说,单是时间成本就很大。

vaex的统计计算函数:

可视化展示

vaex还可以进行快速可视化展示,即便是上百亿的数据集,依然能秒出图。

vaex可视化函数:

结论

vaex有点类似spark和pandas的结合体,数据量越大越能体现它的优势。只要你的硬盘能装下多大数据,它就能快速分析这些数据。

vaex还在快速发展中,集成了越来越多pandas的功能,它在github上的star数是5k,成长潜力巨大。

附:hdf5数据集生成代码(4列1亿行数据)

import pandas as pd
import vaex
df = pd.DataFrame(np.random.rand(100000000,4),columns=['col_1','col_2','col_3','col_4'])
df.to_csv('example.csv',index=False)
vaex.read('example.csv',convert='example1.hdf5')

注意这里不要用pandas直接生成hdf5,其格式会与vaex不兼容。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
17天前
|
分布式计算 数据可视化 数据挖掘
Pandas数据应用:社交媒体分析
本文介绍如何使用Pandas进行社交媒体数据分析,涵盖数据获取、预处理、探索性分析和建模的完整流程。通过API获取数据并转换为DataFrame格式,处理缺失值和数据类型转换问题。利用Matplotlib等库进行可视化,展示不同类型帖子的数量分布。针对大规模数据集提供内存优化方案,并结合TextBlob进行情感分析。最后总结常见问题及解决方案,帮助读者掌握Pandas在社交媒体数据分析中的应用。
149 96
|
2月前
|
存储 机器学习/深度学习 SQL
大数据处理与分析技术
大数据处理与分析技术
182 2
|
4天前
|
数据采集 存储 算法
Pandas数据应用:市场篮子分析
市场篮子分析是一种用于发现商品间关联关系的数据挖掘技术,广泛应用于零售业。Pandas作为强大的数据分析库,在此领域具有显著优势。本文介绍了市场篮子分析的基础概念,如事务、项集、支持度、置信度和提升度,并探讨了数据预处理、算法选择、参数设置及结果解释中的常见问题与解决方案,帮助用户更好地进行市场篮子分析,为企业决策提供支持。
50 29
|
15天前
|
数据采集 数据挖掘 数据处理
Pandas数据应用:金融数据分析
本文介绍如何使用Pandas进行金融数据分析,涵盖数据导入、清洗、转换等基础操作。通过处理缺失值、重复值及数据类型不匹配等问题,结合时间序列分析和大规模数据处理技巧,帮助读者掌握常见问题的解决方案。案例分析展示了计算每日收益率并绘制图表的具体步骤。
45 14
|
14天前
|
存储 数据采集 数据挖掘
Pandas数据应用:用户行为分析
本文介绍了如何使用Pandas进行用户行为分析,涵盖从基础概念到实际应用的多个方面。首先简要介绍了Pandas的安装与基本功能,接着详细讲解了数据加载、初步探索及常见问题(如数据缺失、重复记录和时间戳格式不统一)的处理方法。随后探讨了用户活跃度和路径分析等模式挖掘技巧,并总结了常见报错及避免措施。通过掌握这些内容,读者可以更高效地进行用户行为分析,提升产品设计和用户体验。
66 8
|
29天前
|
机器学习/深度学习 数据可视化 大数据
机器学习与大数据分析的结合:智能决策的新引擎
机器学习与大数据分析的结合:智能决策的新引擎
153 15
|
23天前
|
机器学习/深度学习 分布式计算 数据挖掘
MaxFrame 性能评测:阿里云MaxCompute上的分布式Pandas引擎
MaxFrame是一款兼容Pandas API的分布式数据分析工具,基于MaxCompute平台,极大提升了大规模数据处理效率。其核心优势在于结合了Pandas的易用性和MaxCompute的分布式计算能力,无需学习新编程模型即可处理海量数据。性能测试显示,在涉及`groupby`和`merge`等复杂操作时,MaxFrame相比本地Pandas有显著性能提升,最高可达9倍。适用于大规模数据分析、数据清洗、预处理及机器学习特征工程等场景。尽管存在网络延迟和资源消耗等问题,MaxFrame仍是处理TB级甚至PB级数据的理想选择。
49 4
|
1月前
|
SQL 分布式计算 DataWorks
DataWorks产品测评|基于DataWorks和MaxCompute产品组合实现用户画像分析
本文介绍了如何使用DataWorks和MaxCompute产品组合实现用户画像分析。首先,通过阿里云官网开通DataWorks服务并创建资源组,接着创建MaxCompute项目和数据源。随后,利用DataWorks的数据集成和数据开发模块,将业务数据同步至MaxCompute,并通过ODPS SQL完成用户画像的数据加工,最终将结果写入`ads_user_info_1d`表。文章详细记录了每一步的操作过程,包括任务开发、运行、运维操作和资源释放,帮助读者顺利完成用户画像分析。此外,还指出了文档中的一些不一致之处,并提供了相应的解决方法。
|
1月前
|
分布式计算 DataWorks 搜索推荐
用户画像分析(MaxCompute简化版)
通过本教程,您可以了解如何使用DataWorks和MaxCompute产品组合进行数仓开发与分析,并通过案例体验DataWorks数据集成、数据开发和运维中心模块的相关能力。
|
2月前
|
机器学习/深度学习 存储 大数据
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系,保留最大方差信息,实现数据压缩、去噪及可视化。本文详解PCA原理、步骤及其Python实现,探讨其在图像压缩、特征提取等领域的应用,并指出使用时的注意事项,旨在帮助读者掌握这一强大工具。
134 4