python-faster-pandas-skills
本文最后更新于:2023年6月19日 晚上
numba 加速
原文链接:https://zhuanlan.zhihu.com/p/78882641
使用 numba 非常简单,只需要将 numba 装饰器应用到 python 函数中,无需改动原本的 python 代码,numba 会自动完成剩余的工作。
1 |
|
以上代码是一个 python 函数,用以计算 numpy 数组各个数值的双曲正切值,我们使用了 numba 装饰器,它将这个 python 函数编译为等效的机器代码,可以大大减少运行时间。
什么情况下使用 numba 呢?
使用 numpy 数组做大量科学计算时
使用 for 循环时
Vaex-大数据
pandas 能应付较大数据集(千万行级别),但当数据量达到十亿百亿行级别,pandas 处理起来就有点力不从心了,可以说非常的慢。
官网对 vaex 的介绍可以总结为三点:
- vaex 是一个用处理、展示数据的数据表工具,类似 pandas;
- vaex 采取内存映射、惰性计算,不占用内存,适合处理大数据;
- vaex 可以在百亿级数据集上进行秒级的统计分析和可视化展示;
vaex 的优势在于:
- 性能:处理海量数据,
行/秒;
- 惰性:快速计算,不占用内存;
- 零内存复制:在进行过滤/转换/计算时,不复制内存,在需要时进行流式传输;
- 可视化:内含可视化组件;
- API:类似 pandas,拥有丰富的数据处理和计算函数;
- 可交互:配合 Jupyter notebook 使用,灵活的交互可视化;
vaex 支持读取 hdf5、csv、parquet 等文件,使用 read 方法。hdf5 可以惰性读取,而 csv 只能读到内存中。
读取数据
数据处理
有时候我们需要对数据进行各种各样的转换、筛选、计算等,pandas 的每一步处理都会消耗内存,而且时间成本高。除非说使用链式处理,但那样过程就很不清晰。
vaex 则全过程都是零内存。因为它的处理过程仅仅产生 expression(表达式),表达式是逻辑表示,不会执行,只有到了最后的生成结果阶段才会执行。而且整个过程数据是流式传输,不会产生内存积压。
vaex 的统计计算函数:
可视化展示
vaex 还可以进行快速可视化展示,即便是上百亿的数据集,依然能秒出图。
vaex 可视化函数:
附:hdf5 数据集生成代码(4 列 1 亿行数据)
1 |
|
注意这里不要用 pandas 直接生成 hdf5,其格式会与 vaex 不兼容。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!