Python/Utils

[Python] 진행시간, 진행률 표시하기 - tqdm (pandas apply에도 적용하기)

jimmy_AI 2021. 11. 5. 21:37
반응형

파이썬으로 코딩을 진행할 때, for문 작업이나 pandas의 apply 작업 등 반복 작업을 실행할 때, 현재 몇%가 진행되었고, 얼마나 시간이 더 소요될지에 대한 진행률, 진행시간을 알고 싶을 때가 있을 것입니다.

 

이번 포스팅에서는 반복 작업에 대한 진행 상황을 알려주는 tqdm 라이브러리를 소개하고 pandas의 apply 함수에도 적용할 수 있는 방법까지 알려드리도록 하겠습니다.

 

tqdm 라이브러리

우선, 라이브러리 설치 과정은 매우 간단합니다.

콘솔창이나 아나콘다, 혹은 주피터 노트북 상에

pip install tqdm 혹은 conda install tqdm이라고 입력해주시면 됩니다.

 

사용법은 다음 두 코드를 비교해보시면 됩니다.

j = 0
for i in range(10000000):
    j += 1

 

from tqdm import tqdm

j = 0
for i in tqdm(range(10000000)):
    j += 1

import tqdm으로 바로 불러오는 것(이 경우는 tqdm.tqdm으로 사용하셔야 합니다.)이 아닌, from tqdm import tqdm 으로 불러와주셔야 tqdm으로 바로 사용이 가능합니다.

 

위 코드는 일반 for문이고, 아래 코드는 tqdm을 적용한 for문입니다. 아래 코드를 실행하면 다음 처럼 progress bar가 나타나게 됩니다.

주피터 노트북 환경 상에서 실행시킨 결과인데요, [진행된 개수 / 전체 개수 [지난 시간<남은 예상 시간, 초 당 진행 수]가 뒤쪽의 숫자가 나타내주고 있습니다. 이 경우 현재 41%정도 수행이 완료되었다는 의미이고요!

 

리스트 등 순회 가능한 오브젝트를 순회할때도 다음처럼 tqdm을 그냥 적용해주셔도 무관합니다.

from tqdm import tqdm

list_ex = [i for i in range(10000000)]
for i in tqdm(list_ex):
    j += 1

 

pandas의 progress_apply

이번에는 pandas에서 apply 함수를 적용할 때, tqdm 처럼 진행 상황을 출력하려면 어떻게 해야 하는지 알아보도록 하겠습니다. 일단, import는 다음처럼 해주시면 됩니다.

from tqdm import tqdm, tqdm_pandas

tqdm.pandas()

tqdm_padnas만 같이 import해주고, tqdm.pandas()만 실행시켜주면 됩니다.

 

tqdm을 적용한 apply의 코드 실행은 다음과 같이 진행해줍니다.

result = df.apply(function, axis = 1) # tqdm 미적용
result = df.progress_apply(function, axis = 1) # tqdm 적용

간단합니다. tqdm.pandas() 선언이 완료되었으면, apply 대신 progress_apply를 사용해주시면 진행바가 마찬가지로 출력되는 것을 확인하실 수 있습니다.

 

tqdm.notebook

tqdm 대신 tqdm.notebook을 사용하면 다음과 같은 조금 세련된(?) 진행 바를 사용하실 수 있습니다.

실행 코드는 다음과 같습니다.

from tqdm.notebook import tqdm
j = 0
for i in tqdm(range(10000000)):
    j += 1

이상으로 tqdm을 파이썬에서 사용하는 간단한 방법을 알아보았습니다. 반복 작업에 있어 소요 시간을 미리 알 수 있다면 큰 도움이 될 때가 많으니 유용하게 사용하시면 좋겠습니다!