亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

熊貓:在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 關注
  • 690 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號