안녕하세요, 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
도움이 되셨으면 좋겠네요. 그럼, 다음에 또 만나요~!
'Deep_Learning' 카테고리의 다른 글
DLSS (Deep Learning Super Sampling) (0) | 2025.03.22 |
---|---|
Transfer Learning이란 무엇인가? (0) | 2025.02.20 |
PyTorch에서 .to(device)를 사용하는 이유 (0) | 2025.02.20 |
Anaconda PyTorch GPU 설치 (1) | 2024.09.21 |
Learning to (Learn at Test Time): RNNs with Expressive Hidden States (0) | 2024.08.23 |