前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一句代码:告别Pandas的慢慢慢!

一句代码:告别Pandas的慢慢慢!

作者头像
量化投资与机器学习微信公众号
发布2019-11-12 10:04:08
5630
发布2019-11-12 10:04:08
举报
Swifter

Swifter是一个“以最快的方式将任何函数应用于Pandas dataframe或series”的库。

例如,假设你有两个数组:

array_1 = np.array([1,2,3,4,5])
array_2 = np.array([6,7,8,9,10])

你希望创建一个新的数组,这个数组是两个数组的和,结果是:

result = [7,9,11,13,15]

在Python中,可以使用for循环对这些数组求和,但这样做非常慢。相反,Numpy允许你直接对数组进行操作,这要快得多(特别是对于大型数组)。

result = array_1 + array_2

关键就在于,只要有可能,就要使用向量化操作。

那么Swifter能做些什么呢?

1、Swifter可以检查你的函数是否可以向量化,如果可以,就使用向量化计算。

2、如果不能进行向量化,请检查使用Dask进行并行处理是否有意义:

https://dask.org/

或者只使用普通的Pandas的apply函数,但并行会使小数据集的处理速度变慢。

所以大家面对数据集大小的不同时,要采取不同的代码思路,否则会适得其反!

以上的图表很好地说明了这一点。可以看到,无论数据大小如何,使用向量化总是更好。如果向量化不行,你可以从vanilla Pandas获得最佳速度,直到你的数据足够大。一旦超过了阈值大小,并行处理就最有意义了。

如何写代码:

import pandas as pd
import swifter

df.swifter.apply(lambda x: x.sum() - x.min())

如上所示,只要在应用之前添加一个快速调用,你就可以用一个单词来运行你的padnas了!

下载使用Swifter:

https://github.com/jmcarpenter2/swifter

官方文档有案例供大家参考,在此不再做介绍。

—End—

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量化投资与机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档