Python/NumPy | Pandas

[Python] Pandas - 반복문으로 DataFrame 합치기

비번변경 2023. 1. 14. 17:00

개요

이 글에서는 같은 구조의 DataFrame을 반복적으로 만든 뒤, 하나의 DataFrame으로 합치는 방법에 대해 정리한다.

DataFrame을 합치는 방법으로는 concat, merge, append, join 등의 함수가 존재한다. 다만 기준 열을 이용해 합치는 것이 아니라 단순히 세로로 데이터 연결을 하고자 하므로 이 글에서는 concat과 append를 살펴볼 것이다.

 

아래 데이터를 예시로 정리한다.

import numpy as np
import pandas as pd
import seaborn as sns

titanic = sns.load_dataset("titanic")

 

 

append

행 끝에 다른 행을 추가한 새 DataFrame을 반환한다. 추가할 DataFrame의 인덱스를 무시할 때는 ignore_index 매개변수를 True로 지정한다.

df = pd.DataFrame()
for idx in range(10):
    tmp = titanic.iloc[idx]
    df = df.append(tmp, ignore_index=True)
    
df

💡 append 함수는 Pandas 1.4.0부터 concat으로 대체되어 앞으로 나올 버전에서는 삭제될 수 있다.

따라서 append 대신 concat을 사용하는 것을 권장한다.

 

 

concat

concatenation의 줄임말로, iterable 한 개체를 행 또는 열을 기준으로 합친 객체를 반환한다.

결합할 데이터를 iterable한 개체로 전달해야 하기 때문에 리스트 등에 결합할 데이터를 모은 뒤 한 번에 결합하는 것이 좋다.

list_tmp_df = []
for idx in range(10):
    tmp = titanic.iloc[[idx], :]
    list_tmp_df.append(tmp)
df = pd.concat(list_tmp_df, ignore_index=True)

df

 

 

성능 비교

append는 deprecated되었다는 것도 있지만 성능에 있어서도 concat을 사용하는 것이 좀 더 좋다. %%time 명령어로 이용해 위에서 실행한 코드의 소요시간을 확인해보도록 한다.

 

append concat

concat을 사용했을 때보다 append를 사용했을 때의 소요시간이 훨씬 길다는 것을 확인할 수 있다.

 

 

참고 문서

https://ordo.tistory.com/51

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.append.html

https://pandas.pydata.org/docs/reference/api/pandas.concat.html

2022.12.27 - [Python] Pandas - 데이터프레임 합성 2

https://zephyrus1111.tistory.com/115