首页 > 其他分享 >Pandas常见的性能优化方法

Pandas常见的性能优化方法

时间:2022-10-19 11:38:26浏览次数:84  
标签:内置 读取 read 常见 csv 优化 Pandas 函数


​Pandas​​是数据科学和数据竞赛中常见的库,我们使用​​Pandas​​可以进行快速读取数据、分析数据、构造特征。但​​Pandas​​在使用上有一些技巧和需要注意的地方,如果你没有合适的使用,那么​​Pandas​​可能运行速度非常慢。本文将整理一些​​Pandas​​使用技巧,主要是用来节约内存和提高代码速度。


1 数据读取与存取


在​​Pandas​​中内置了众多的数据读取函数,可以读取众多的数据格式,最常见的就是​​read_csv​​函数从csv文件读取数据了。但​​read_csv​​在读取大文件时并不快,所以建议你使用​​read_csv​​读取一次原始文件,将​​dataframe​​存储为HDF或者feather格式。一般情况下HDF的读取比读取csv文件快几十倍,但HDF文件在大小上会稍微大一些。


建议1:尽可能的避免读取原始csv,使用hdf、feather或h5py格式文件加快文件读取;


在某些定长的字符数据的读取情况下,​​read_csv​​读取速度比​​codecs.readlines​​慢很多倍。同时如果你想要表格尽量占用较小的内存,可以在​​read_csv​​时就设置好每类的类型。


2 itertuples与iterrows


​itertuples​​和​​iterrows​​都能实现按行进行迭代的操作,但在任何情况下​​itertuples​​都比​​iterrows​​快很多倍。


Pandas常见的性能优化方法_第三方库

建议2:如果必须要要用iterrows,可以用itertuples来进行替换。

3 apply、transform和agg时尽量使用内置函数


在很多情况下会遇到​​groupby​​之后做一些统计值计算,而如果用内置函数的写法会快很多。


Pandas常见的性能优化方法_内置函数_02transform() 方法+自定义函数,用时1分57s

Pandas常见的性能优化方法_第三方库_03transform() 方法+内置方法,用时712ms

Pandas常见的性能优化方法_内置函数_04agg() 方法+自定义函数,用时1分2s

Pandas常见的性能优化方法_内置函数_05agg() 方法+内置方法,用时694ms

建议3:在grouby、agg和transform时尽量使用内置函数计算。



4 第三方库并行库


由于​​Pandas​​的一些操作都是单核的,往往浪费其他核的计算时间,因此有一些第三方库对此进行了改进:


  • modin:对读取和常见的操作进行并行;
  • swifter:对​​apply​​函数进行并行操作;


当然我之前也对此类库进行了尝试,在一些情况下会快一些,但还是不太稳定。在阿里云安全赛中我是用​​joblib​​库写的并行特征提取,比单核特征提取快60倍。


建议4:如果能并行就并行,用第三方库或者自己手写多核计算。

5 代码优化思路


在优化​​Pandas​​时可以参考如下操作的时间对比:

Pandas常见的性能优化方法_内置函数_06

建议5:在优化的过程中可以按照自己需求进行优化代码,写代码尽量避免循环,尽量写能够向量化计算的代码,尽量写多核计算的代码。


​Pandas​​官方也写了一篇性能优化的文章,非常值得阅读:

​https://pandas.pydata.org/pandas-docs/stable/user_guide/enhancingperf.html​


Pandas常见的性能优化方法_第三方库_07

标签:内置,读取,read,常见,csv,优化,Pandas,函数
From: https://blog.51cto.com/u_15699042/5769142

相关文章

  • vue 文件打包太大 -- 体积优化
    最新打包vuecli4.5项目时,体积尽然达到了9M,页面访问的速度,因此进行尝试进行优化,最终压缩到968k,效果明显。下面是优化方法。首先新建文件'vue.config.js',放在项目根目......
  • 粒子群优化算法-Python版本和Matlab函数调用
    前两天分享了粒子群优化算法的原理和Matlab原理实现,本文分享一下Python代码下的PSO实现以及Matlab下的粒子群函数。前文参看:​​粒子群优化算法(PSO)​​以Ras函数(Rastrigin's......
  • VUE 代码压缩优化
    1、设置productionSourceMap为false如果不需要生产环境的sourcemap,可以将其设置为false以加速生产环境构建。设置为false打包时候不会出现.map文件module.exports......
  • java 内存分析优化
    MATjava内存分析工具:https://cloud.tencent.com/developer/article/1377476内存溢出问题排查:https://mp.weixin.qq.com/s/lQut5nWIT3WbuVA57bw4pw......
  • Elasticsearch 聚合性能优化六大猛招
    Elasticsearch最少必要知识实战教程直播回放1、问题引出默认情况下,Elasticsearch已针对大多数用例进行了优化,确保在写入性能和查询性能之间取得平衡。我们将介绍一些聚......
  • #yyds干货盘点#前端优化之压缩
    前端文件的压缩主要是资源图片以及js和css压缩,今天分享一下vue项目中的文件压缩方法。压缩js和css如果你使用的是webpackv5或更高版本,是开箱机带的功能,但是你的webpack是......
  • Elasticsearch 常见的 8 种错误及最佳实践
    题记Elasticsearch社区有大量关于Elasticsearch错误和异常的问题。深挖这些错误背后的原因,把常见的错误积累为自己的实战经验甚至是工具,不仅可以节省我们的开发和运维时......
  • Elasticsearch聚合优化 | 聚合速度提升5倍
    1、聚合为什么慢?大多数时候对单个字段的聚合查询还是非常快的,但是当需要同时聚合多个字段时,就可能会产生大量的分组,最终结果就是占用es大量内存,从而导致OOM的情况发生......
  • Webpack构建速度优化
    前言当我们的项目越来越大,webpack的配置项越来越多时,构建速度会越来越慢,所以我们需要通过一些配置来提高webpack的构建速度。目录缩小范围noParseIgnorePlugin优化......
  • plsql连接oracle数据库常见的报错
    1、ORA-00001:违反唯一约束条件的解决办法(sql重复执行)2、ORA-01427问题的分析和解决(sql语句有错误)3、Oracle报ORA-00942:表或视图不存在的解决方法(用sql重新查找表是否存......