본문 바로가기
카테고리 없음

Pandas에서 loop 로 row 접근하는 방법 속도비교

by 단창 2020. 4. 14.

 

#%% iloc/ loc
import time
t0 = time.time()
cnt= 0
for i in range(10000):
    a =df1c.loc[i]['play_days']
    if int(a)>5:
        cnt+=1
print(cnt)
print('elapsed. ', time.time() - t0)

#%% at
import time
t0 = time.time()
cnt= 0
for i in range(10000):
    a =df1c.at[i,'play_days']
    if int(a)>5:
        cnt+=1
print(cnt)
print('elapsed. ', time.time() - t0)


#%% export list of dict
t0 = time.time()
df_d = df1c.to_dict()
print('elapsed. ', time.time() - t0)
#%%
import time
t0 = time.time()
cnt= 0
for i in range(10000):
    a = df_d['plray_days'][i]
    if int(a)>5:
        cnt+=1
print(cnt)
print('elapsed. ', time.time() - t0)


#%% export to dict
t0 = time.time()
df_d2 = df1c.T.to_dict().values()
print('elapsed. ', time.time() - t0)
df_d2 = list(df_d2)
#%%
import time
t0 = time.time()
cnt= 0
for i in range(10000):
    a = df_d2[i]['play_days']
    if int(a)>5:
        cnt+=1
print(cnt)
print('elapsed. ', time.time() - t0)

1) loc/ iloc 로 접근하는 방법 

elapsed.  1.4490845203399658

 

2) at[i, col] 로 접근하는 방법

elapsed.  0.09808158874511719

 

3) dataframe 을 dict로 convert 해서 dict의 [col][i] 로 접근하는 방법 

elapsed.  0.002546072006225586

 

4) dataframe 을 list of dict로 convert해서 [i][col] 로 접근하는 방법

elapsed.  0.00275421142578125

 

3,4 번이 가장 빠르다. 그러나 ,4번은 모든 row마다 dict로 컨버팅 하는 과정이 너무 오래 걸림

1번이 가장 느리다. 

반응형