为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫:在dropna之后就地重命名的性能下降

熊猫:在dropna之后就地重命名的性能下降

繁星coding 2019-10-19 16:06:50
我已将此报告为关于熊猫问题的问题。同时,我将其发布在这里,以期节省其他人的时间,以防他们遇到类似的问题。在对需要优化的过程进行性能分析时,我发现将列重命名为IN120可以将性能(执行时间)提高x120。分析表明这与垃圾收集有关(请参阅下文)。此外,通过避免dropna方法,可以恢复预期的性能。以下简短示例演示了系数x12:import pandas as pdimport numpy as npinplace = True%%timeitnp.random.seed(0)r,c = (7,3)t = np.random.rand(r)df1 = pd.DataFrame(np.random.rand(r,c), columns=range(c), index=t)indx = np.random.choice(range(r),r/3, replace=False)t[indx] = np.random.rand(len(indx))df2 = pd.DataFrame(np.random.rand(r,c), columns=range(c), index=t)df = (df1-df2).dropna()## inplace rename:df.rename(columns={col:'d{}'.format(col) for col in df.columns}, inplace=True)100个循环,最佳3:每个循环15.6毫秒的第一条输出线%%prun:ncalls tottime percall cumtime percall filename:lineno(function)1  0.018 0.018 0.018 0.018 {gc.collect}inplace = False%%timeitnp.random.seed(0)r,c = (7,3)t = np.random.rand(r)df1 = pd.DataFrame(np.random.rand(r,c), columns=range(c), index=t)indx = np.random.choice(range(r),r/3, replace=False)t[indx] = np.random.rand(len(indx))df2 = pd.DataFrame(np.random.rand(r,c), columns=range(c), index=t)df = (df1-df2).dropna()## avoid inplace:df = df.rename(columns={col:'d{}'.format(col) for col in df.columns})1000次循环,最好为3:每个循环1.24毫秒避免dropna通过避免该dropna方法,可以恢复预期的性能:%%timeitnp.random.seed(0)r,c = (7,3)t = np.random.rand(r)df1 = pd.DataFrame(np.random.rand(r,c), columns=range(c), index=t)indx = np.random.choice(range(r),r/3, replace=False)t[indx] = np.random.rand(len(indx))df2 = pd.DataFrame(np.random.rand(r,c), columns=range(c), index=t)#no dropna:df = (df1-df2)#.dropna()## inplace rename:df.rename(columns={col:'d{}'.format(col) for col in df.columns}, inplace=True)1000个循环,每个循环最好3:865 µs1000个循环,最好为3:每个循环902 µs
查看完整描述

2 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

我不会说语法没有任何优势-它使您可以避免在等号的两边都放长规范。这是some_long_complicated_expression[some:long_slice, more_information_here] += 1over 优势的一种变体some_long_complicated_expression[some:long_slice, more_information_here] = some_long_complicated_expression[some:long_slice, more_information_here] + 1

查看完整回答
反对 回复 2019-10-19
  • 2 回答
  • 0 关注
  • 617 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信