Python List append vs Pandas DataFrame append 속도 비교
반복문 마다 list가 하나씩 생성되는 코드가 있고, 이렇게 생성된 여러 개의 list 를 append 시켜서 dataframe으로 만드는 경우가 있습니다. 이때 append하는 방법으로 list로 append하는 방법도 존재하고 list를 dataframe으로 변경시킨 뒤 dataframe으로 append하는 방식도 존재하는데, 이 둘의 속도 차이를 살펴보도록 하겠습니다.
import numpy as np
import pandas as pd
import time
# random 으로 실험할 test numpy 생성
test = np.random.rand(10000,200)
# 생성한 test numpy를 list로 변경
test_list = test.tolist()
########### 방법1 : list 를 append 하고 마지막에 dataframe으로 변경 ###########
since = time.time()
test_append_list = []
for i in range(len(test_list)):
test_append_list.append( test_list[i] )
test_append_list_df = pd.DataFrame( test_append_list )
print(time.time() - since)
# out : 0.35662055015563965
###############################################################################
########### 방법2 : list를 dataframe으로 변경하고 dataframe으로소 append#######
since = time.time()
test_append_df = pd.DataFrame()
for i in range(len(test_list)):
test_append_df = test_append_df.append( [test_list[i]] )
print(time.time() - since)
# out : 56.751508474349976
###############################################################################
# 두 방법으로 생성된 dataframe이 같은지 확인
np.unique( test_append_list_df == test_append_df.reset_index(drop = True) )
# out : array([True])
두 방법으로 생성된 dataframe은 같으나 속도에서 큰 차이를 볼 수 있었습니다.
list를 append한 경우는 0.36초 정도가 걸리고 dataframe으로 변형시켜서 append하는 경우는 56.75초가 걸려 약 160배의 속도 차이를 보이네요.
앞으로 이런 경우가 있다면 list로 append 시키고 마지막에 한 번에 변형을 해야하겠습니다. dataframe으로 변형시키면 index를 따로 지정하지 않는 이상 index가 모두 0으로 나와 list로 append하는게 더 편하기도 하네요.
* numpy 연산( = matix 연산 )이 가능하다면 numpy를 사용하는 것이 좋습니다. ( e.g. pd.DataFrame(test) )
'Python > Python 기타' 카테고리의 다른 글
Python @property , @property.setter 간단 정리 (0) | 2023.03.05 |
---|---|
한 줄로 Euclidean distance matrix 만들기 (Python) (0) | 2021.09.27 |
Python 재귀에서의 global 활용 (0) | 2021.09.22 |
cmd 통해 자동으로 주피터 노트북(jupyter notebook brower) 띄우기 (0) | 2021.01.08 |
Python 주피터 노트북 Markdown 위첨자 아래첨자 작성법 (0) | 2020.09.16 |