Deep_Learning

Pandas Dataframe에 apply()에서도 진척도 확인하기

MoonLight314 2025. 3. 3. 13:36
728x90

안녕하세요, MoonLight입니다.

저는 긴 작업을 수행하는 경우, 예를 들면 Model Train을 한다든지, Data 전체에 걸친 작업을 해야 하는데 금방 끝나지 않는 경우에 곡 tqdm을 사용해서 진척도를 확인하는 편입니다.

어느 정도 진행되고 있는지 혹시 뻗은 건 아닌지 확인해야 마음이 편해지기 때문입니다.

그런데, Pandas Dataframe에 apply()를 사용하는 경우에는 진척도를 볼 수가 없어서 답답한 경우가 있습니다.

이번 Post에서는 Pandas Dataframe에 apply()를 적용하는 경우에도 tqdm의 진척도 그래프를 볼 수 있는 방법을 알아보도록 하겠습니다.

방법은 의외로 간단합니다. apply()대신 progress_apply()를 사용하면 됩니다.

생각보다 너무 쉬워서 좀 싱겹네요. 아래에는 progress_apply()를 사용하는 예제를 하나 가지고 왔습니다.

Titanic Dataset에서 Embarked Column의 값은 S,C,Q 이렇게 3개가 있는데 이것을 Model이 학습할 수 있도록 숫자로 변환하는 함수를 만들고 이를 apply() 대신 progress_apply()를 적용해서 진척도가 나타나는지 알아보도록 하겠습니다.

import pandas as pd
from tqdm.auto import tqdm

tqdm.pandas()  # 이 문구는 tqdm의 pandas 전용 Method를 호출해 주기 위해서 반드시 필요합니다.

우리가 사용할 Titanic Dataset을 불러옵니다.

 

train = pd.read_csv("./train.csv")

train.head()

 

우리는 마지막 Column에 있는 'Embarked' 값을 숫자로 변환하려고 합니다.

train['Embarked'].value_counts()

Embarked
S    644
C    168
Q     77
Name: count, dtype: int64

 

아래의 함수를 'Embarked'에 apply할 예정입니다.

def map_embarked_label(data):
    if(data == "S"):
        return 0
    elif (data == "C"):
        return 1
    elif (data == "Q"):
        return 2

아래에 보시는 바와 같이, progress_apply()를 사용하면 일반적인 tqdm 진척도를 보여주는 것과 같이 진척도가 표시되는 것을 확인할 수 있습니다.

 

train['Embarked_Label'] = train["Embarked"].progress_apply(map_embarked_label)

100%|██████████| 891/891 [00:00<?, ?it/s]
train['Embarked_Label'].head()

0    0.0
1    1.0
2    0.0
3    0.0
4    0.0
Name: Embarked_Label, dtype: float64

변환 결과도 좋네요.

train['Embarked_Label'].value_counts()

Embarked_Label
0.0    644
1.0    168
2.0     77
Name: count, dtype: int64

도움이 되셨으면 좋겠네요. 그럼, 다음에 또 만나요~!

728x90