python– 如何加快Pandas中的重采样过程?

python– 如何加快Pandas中的重采样过程?,第1张

概述假设您有一个1分钟时间序列的数据框,包含索引,4列和400万行.当你尝试做类似的事情: conversion = {'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last'} df1 = df.resample('5Min', how=conversion) 这需要一段荒谬的时间(20-30

假设您有一个1分钟时间序列的数据框,包含索引,4列和400万行.当你尝试做类似的事情:

 conversion = {'Open': 'first','High': 'max','Low': 'min','Close': 'last'} df1 = df.resample('5Min',how=conversion)

这需要一段荒谬的时间(20-30分钟).我怎样才能加快这个过程

Pandas 18,Python 2.7

最佳答案Resample似乎在大小(4000000,4)的数据集上运行得非常快:

IDx = pd.date_range('1/1/2010',periods=4000000,freq='T')df = pd.DataFrame(np.random.rand(4000000,4),columns = ["Open","High","Low","Close"],index = IDx)%timeit df.resample("5Min").agg(conversion)1 loop,best of 3: 253 ms per loop

有一个不规则的索引和一些nan:

IDx1 = pd.date_range('1/1/1900',periods=10000000,freq='Min')IDx2 = pd.date_range('1/1/1940',freq='Min')IDx3 = pd.date_range('1/1/1980',freq='Min')IDx4 = pd.date_range('1/1/2020',freq='Min')IDx = np.array([np.random.choice(IDx1,1000000),np.random.choice(IDx2,np.random.choice(IDx3,np.random.choice(IDx4,1000000)]).flatten()np.random.shuffle(IDx)df = pd.DataFrame(np.random.randint(100,size=(4000000,4)),index = IDx)df.loc[np.random.choice(IDx,100000),"Open"] = np.nandf.loc[np.random.choice(IDx,50000),"High"] = np.nandf.loc[np.random.choice(IDx,500000),"Low"] = np.nandf.loc[np.random.choice(IDx,20000),"Close"] = np.nan%timeit df.resample("5Min").agg(conversion)1 loop,best of 3: 5.06 s per loop

因此,似乎除了重新采样之外的其他事情需要时间来处理您的情况. 总结

以上是内存溢出为你收集整理的python – 如何加快Pandas中的重采样过程?全部内容,希望文章能够帮你解决python – 如何加快Pandas中的重采样过程?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1206405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存