社区编辑申请
注册/登录
速度起飞!替代 pandas 的八个神库
开发 后端
本篇介绍 8 个可以替代pandas的库,在加速技巧之上,再次打开速度瓶颈,大大提升数据处理的效率。

大家好,

之前介绍过不少关于pandas性能加速的技巧,但这些技巧再厉害,整体运行速度方面也会遇到瓶颈。

本篇介绍 8 个可以替代pandas的库,在加速技巧之上,再次打开速度瓶颈,大大提升数据处理的效率。

1. Dask

Dask在大于内存的数据集上提供多核和分布式并行执行。

在Dask中,一个DataFrame是一个大型且并行的DataFrame,由许多较小的 pandas DataFrames组成,沿索引拆分。

这些 pandas DataFrames 可以存在于单个机器上的磁盘中计算远超于内存的计算,或者存在集群中的很多不同机器上完成。一个 Dask DataFrame 操作会触发所有 Pandas DataFrames 的操作。

Dask-ML支持pandas、Numpy、Sklearn、XGBoost、XArray、RAPIDS等等,对于常用的数据处理、建模分析是完全够用的。

# 安装dask
pip install dask
# 导入dask dataframe
import dask.dataframe as dd

原理、使用可参考这篇:​​安利一个Python大数据分析神器Dask​​!

2. Modin

Modin是一个多进程的Dataframe库,可以加速Pandas的工作流程。多进程意味着,如果在多核的计算机上查询速度就会成倍的提升。

Modin具有与pandas相同的API,使用上只需在import导入时修改一下,其余操作一模一样。

# 导入 modin pandas
import modin.pandas as pd

原理、安装、使用可参考这篇:​​pandas慢怎么办?来试试Modin​​​

3. Data Table

Datatable是一个用于处理表格数据的 Python 库。

与pandas的使用上很类似,但更侧重于速度和大数据的支持。在单节点的机器上,无论是读取数据,还是数据转换等操作,速度均远胜于pandas。

如果不是分布式而是单节点处理数据,遇到内存不够或者速度慢,也不妨试试这个库。

  •  使用文档:https://datatable.readthedocs.io/en/latest/start/quick-start.html

4. Polars

Polars是使用 Apache Arrow Columnar Format 作为内存模型在 Rust 中实现的速度极快的 DataFrames 库。

# 安装 polars
pip install polars
# 导入 polars
import polars as pl
  •  使用文档:https://pola-rs.github.io/polars-book/user-guide/index.html

5. Vaex

Vaex 也是一个开源的 DataFrame,它采用内存映射、高效的核外算法和延迟计算等技术。

对于大数据集而言,只要磁盘空间可以装下数据集,使用Vaex就可以对其进行分析,解决内存不足的问题。

它的各种功能函数也都封装为类 Pandas 的 API,几乎没有学习成本。

可参考这篇文章:​​0.052 秒打开 100GB 数据,这个Python开源库火爆了​​!

6. Pyspark

Pyspark 是 Apache Spark 的 Python API,通过分布式计算处理大型数据集。

# 安装
pip install pyspark
# 导入
from pyspark.sql import SparkSession, functions as f
spark = SparkSession.builder.appName("SimpleApp").getOrCreate()
df = spark.read.option('header', True).csv('../input/yellow-new-yo

由于spark在速度上较hadoop更有优势,现在很多企业的大数据架构都会选择使用spark。

7. Koalas

Koalas 是在 Apache Spark 之上实现 的pandas DataFrame API,让数据分析更高效。

由于 Koalas 是在 Apache Spark 之上运行的,因此还必须安装 Spark。

# 安装
pip install pyspark
pip install koalas
# 导入
import databricks.koalas as ks
from pyspark.sql import SparkSession
  •  使用文档:https://koalas.readthedocs.io/en/latest/index.html

8. cuDF

cuDF 是一个 Python GPU DataFrame 库,基于 Apache Arrow 列式内存格式构建,用于数据操作。

cuDF 提供类 pandas 的 API,因此数据分析师也是无需了解 CUDA 编程细节的。

import cudf, io, requests
from io import StringIO
url = "https://github.com/plotly/datasets/raw/master/tips.csv"
content = requests.get(url).content.decode('utf-8')
tips_df = cudf.read_csv(StringIO(content))
tips_df['tip_percentage'] = tips_df['tip'] / tips_df['total_bill'] * 100
print(tips_df.groupby('size').tip_percentage.mean())
  •  使用文档:https://github.com/rapidsai/cudf

本篇介绍的 8 个Python库原理不同,使用环境也有差异,大家可以根据自己的需求进行尝试。

但这些库基本上都提供了类pandas的API,因此在使用上没有什么学习成本,只要配置好环境就可以上手操作了。

责任编辑:庞桂玉 来源: Python爱好者社区
相关推荐

2020-09-15 09:45:23

Pandas代码Python

2022-04-25 08:43:47

pandas代码Python

2022-07-07 10:46:51

数据处理

2022-05-10 09:33:50

Pandas技巧代码

2018-12-14 15:51:47

Pandas数据数据结构

2020-08-14 10:57:49

开发技能代码

2020-10-29 08:35:06

Pandas函数Python

2020-08-16 10:58:20

Pandaspython开发

2019-10-17 09:57:08

Python设计电脑

2019-10-31 10:16:06

数据Python开发

2019-11-20 10:54:32

Python数据结构数据库

2022-05-24 12:50:58

Pandas索引代码

2020-06-24 11:59:31

PythonPandas数据处理

2020-05-19 17:09:33

Pandas大数据数据分析

2020-05-06 09:18:56

Pandas函数大数据技术

2021-12-24 10:45:19

2019-07-08 16:18:56

PandasPyhton库数据处理

2020-01-03 08:34:18

pandas代码开发

2021-01-12 12:33:20

Pandas技巧代码

2019-04-29 08:31:25

PythonPandas数据

同话题下的热门内容

该不该将单体架构迁移到微服务?如何创建一个无代码的自助客户聊天机器人功能测试vs.非功能测试:能否非此即彼地进行选择?JMS VS Kafka:苹果与橘子之战!「芯片法案」下周签署!台积电沉默以对佩洛西,三星、SK海力士谨慎观望Java 服务 Docker 容器化优秀实践说实话,今年互联网人跳槽的逻辑变了八个流行的 Python 可视化工具包,你喜欢哪个?

编辑推荐

2017年9月编程语言排行榜:Java、C与C++三巨头还能统治排行榜多久?2017年最受欢迎的5个前端框架比较2017年11月编程语言排行榜:脚本语言怎么了?2017年3月编程语言排行榜:Swift首次进入前十最近租房有点烦!技术人如何用Python找到称心如意的“小窝”?
我收藏的内容
点赞
收藏

51CTO技术栈公众号