팬더 iterrows에 성능 문제가 있습니까?

| | | | | | | |

pandas에서 iterrows를 사용할 때 매우 열악한 성능을 발견했습니다.

이것이 다른 사람들이 경험하는 것입니까? iterrows에만 해당되며 특정 크기의 데이터에 대해서는 이 기능을 피해야 합니까(2-3백만 행으로 작업 중)?

이 토론은 데이터 프레임에서 dtypes를 혼합할 때 발생한다고 생각했지만 아래의 간단한 예는 하나의 dtype(float64)을 사용하는 경우에도 존재함을 보여줍니다. 내 컴퓨터에서 36초 걸립니다:

pandas를 pd로 가져오기 numpy를 np 가져오기 시간으로 가져오기 s1 = np.random.randn(2000000) s2 = np.random.randn(2000000) dfa = pd .DataFrame({"s1": s1, "s2": s2}) start = time.time() rowindex의 경우 i=0, dfa.iterrows()의 행: i+=1 end = time.time() 인쇄 끝 - start 

apply와 같은 벡터화 작업이 훨씬 더 빠른 이유는 무엇입니까? 거기에도 행 단위 반복이 있어야 한다고 생각합니다.

방법을 알 수 없습니다. 내 경우에는 iterrows를 사용하지 않습니다(이것은 향후 질문을 위해 저장하겠습니다). 따라서 이 반복을 지속적으로 피할 수 있었다면 들어주시면 감사하겠습니다. 별도의 데이터 프레임에 있는 데이터를 기반으로 계산하고 있습니다. 감사합니다!

---편집: 실행하려는 단순화 버전이 아래에 추가되었습니다---

pandas를 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"] ) #%% 최적화 정의 def optimize(t2info, t1info): 인덱스의 경우 계산 = [], t2info.iterrows()의 r: 계산.append(r["숫자2"]*t1info) maxrow = 계산.index(max( 계산)) 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