当前位置: 首页 > 科技观察

飞速起飞!替换pandas的八个魔法库

时间:2023-03-22 15:53:16 科技观察

大家好,之前介绍过很多关于pandas性能加速的技巧,但是这些技巧再厉害,整体运行速度也会遇到瓶颈。本文介绍8个可以替代pandas的库。在加速技术的基础上,速度瓶颈再次被打开,数据处理效率大幅提升。1.DaskDask在大于内存的数据集上提供多核和分布式并行执行。在Dask中,DataFrame是由许多较小的pandasDataFrame组成的大型并行DataFrame,沿索引拆分。这些pandasDataFrame可以存在于单台机器的磁盘上,比内存或集群中的许多不同机器上的计算量要多得多。DaskDataFrame操作会触发所有PandasDataFrame上的操作。Dask-ML支持pandas、Numpy、Sklearn、XGBoost、XArray、RAPIDS等,对于常见的数据处理和建模分析完全够用。#安装daskpipinstalldask#导入daskdataframeimportdask.dataframeasdd原理,使用可以参考这篇文章:安利一款Python大数据分析神器Dask!2.ModinModin是一个多进程的Dataframe库,可以加速Pandas的工作流程。多进程是指如果在多核计算机上查询速度提高一倍。Modin和pandas有相同的API,只需要在导入的时候修改一下,其余操作完全一样。#importmodinpandasimportmodin.pandasaspdpd的原理、安装、使用可以参考这篇文章:pandas慢怎么办?让我们试试Modin3。数据表Datatable是一个用于处理表格数据的Python库。它在使用上类似于pandas,但更侧重于速度和大数据支持。在单节点机器上,无论是读取数据还是数据转换,速度都比pandas快很多。如果不是分布式而是单节点处理数据,遇到内存不足或者速度慢的情况,不妨试试这个库。使用文档:https://datatable.readthedocs.io/en/latest/start/quick-start.html4.PolarsPolars是一个极快的DataFrames库,使用ApacheArrowColumnarFormat作为内存模型在Rust中实现。#安装polarspipinstallpolars#导入polarsimportpolarsaspl文档:https://pola-rs.github.io/polars-book/user-guide/index.html5。VaexVaex也是一个开源的DataFrame,它使用了内存映射、高效的核外算法和延迟计算技术。对于大数据集,只要磁盘空间能够容纳数据集,就可以使用Vaex对其进行分析,解决内存不足的问题。它的各种功能函数也被封装成类Pandas的API,几乎没有学习成本。可以参考这篇文章:0.052秒打开100GB数据,这个Python开源库火了!6.PysparkPyspark是ApacheSpark的PythonAPI,通过分布式计算处理大数据集。#安装pipinstallpyspark#Importfrompyspark.sqlimportSparkSession,功能为fspark=SparkSession.builder.appName("SimpleApp").getOrCreate()df=spark.read.option('header',True).csv('../input/yellow-new-yo由于spark在速度上比hadoop有优势,现在很多公司都选择在大数据架构中使用spark7.KoalasKoalas是在ApacheSpark之上实现的pandasDataFrameAPI,让数据更高效的分析。由于Koalas运行在ApacheSpark之上,因此也必须安装Spark。#安装pipinstallpysparkpipinstallkoalas#Importimportdatabricks.koalasasksfrompyspark.sqlimportSparkSession文档:https://koalas.readthedocs.io/en/latest/index.html8。cuDFcuDF是一个基于ApacheArrow柱状内存格式构建的PythonGPUDataFrame库,用于数据操作。cuDF提供了类似pandas的API,因此数据分析人员无需了解CUDA编程的细节。导入cudf、io、来自io的请求)tips_df=cudf.read_csv(StringIO(content))tips_df['tip_percentage']=tips_df['tip']/tips_df['total_bill']*100print(tips_df.groupby('size').tip_percentage.mean())使用文档:https://github.com/rapidsai/cudf本文介绍的8个Python库,原理不同,使用环境也不同。您可以根据自己的需要尝试它们。但是这些库基本上都提供了类pandas的API,所以使用起来没有学习成本,只要配置好环境就可以上手。