パンダの繰り返しにはパフォーマンスの問題がありますか?

| | | | | | | |

パンダのイテローを使用するとパフォーマンスが非常に低下することに気づきました。

これは他の人が経験していることですか? iterrowに固有であり、特定のサイズのデータ(2〜300万行で作業している)ではこの機能を回避する必要がありますか?

GitHubでのこの議論は、データフレームでdtypeを混合するときに発生するものだと私に信じさせましたが、以下の簡単な例は、1つのdtype(float64)を使用する場合でも存在することを示しています。私のマシンでは36秒かかります:

  import pandas as pd import numpy as np import time s1 = np.random.randn(2000000)s2 = np.random.randn(2000000)dfa = pd .DataFrame({"s1":s1、 "s2":s2})start = time.time()i = 0 for rowindex、row in dfa.iterrows():i + = 1 end = time.time()print end --start  

適用のようなベクトル化された操作が非常に高速なのはなぜですか?そこでも行ごとの反復が行われている必要があると思います。

方法がわかりません私の場合はiterrowsを使用しないようにします(これは将来の質問のために保存します)。したがって、この反復を一貫して回避できた場合は、聞いていただければ幸いです。別々のデータフレームのデータに基づいて計算を行っています。ありがとうございます!

---編集:実行したいものの簡略版を以下に追加しました---

  import pandas as pd import numpy as np#%%元のテーブルを作成しますt1 = {"letter":["a"、 "b"]、 "number1":[50、-10]} t2 = {"letter ":[" a "、" a "、" b "、" b "]、" number2 ":[0.2,0.5,0.1,0.4]} table1 = pd.DataFrame(t1)table2 = pd.DataFrame(t2) #%%新しいテーブルの本体を作成しますtable3 = pd.DataFrame(np.nan、columns = ["letter"、 "number2"]、index = [0])#%%関連データのフィルタリング、最適化、戻りを繰り返しますrow_indexの情報、table1.iterrows()の行:t2info = table2 [table2.letter == row ["letter"]]。reset_index()table3.ix [row_index、] =optimize(t2info、row ["number1"] )#%%最適化の定義defoptimize(t2info、t1info):calculation = [] for index、r in t2info.iterrows():calculation.append(r ["number2"] * t1info)maxrow = Calculation.index(max(計算))return t2info.ix [maxrow]  

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method