Прогресс-индикатор операций Pandas: группировка и apply()
Быстрый ответ
Чтобы следить за выполнением операций в Pandas, используется библиотека tqdm, создающая адаптивные индикаторы прогресса. Прежде всего, необходимо установить tqdm
, выполнив pip install tqdm
. После этого вы сможете применять метод .progress_apply()
вместо обычных вызовов apply()
:
from tqdm.auto import tqdm
tqdm.pandas()
df['processed'] = df['column'].progress_apply(your_function) # Отслеживание прогресса в работе!
Таким образом, вы включаете визуализацию процесса выполнения операций с данными.
Работа с tqdm и pandas
Индикатор прогресса для операций Groupby
Возможно прозрачное выполнение операций groupby с контролем через tqdm:
df.groupby('category').progress_apply(your_group_function) # Мониторинг группировки в реальном времени
Преобразование данных с мониторингом прогресса
Преобразуйте данные и сразу наблюдайте за ходом процесса:
df.progress_transform(your_transform_function) # Отслеживание трансформации данных "на лету"
Индикатор прогресса для пользовательских операций
tqdm позволяет отслеживать каждый этап выполнения сложных операций:
with tqdm(total=df.shape[0]) as pbar:
for index, row in df.iterrows():
# Выполняется ваша сложная операция. Начало.
pbar.update(1) # Обновление состояния индикатора прогресса. Этап завершён!
Продвинутое мониторинг прогресса с помощью tqdm
Ускорение операций с использованием многопоточности
Улучшить производительность и одновременно получать информацию о прогрессе выполнения позволяет многопоточность:
from pandarallel import pandarallel
from tqdm.auto import tqdm
pandarallel.initialize(progress_bar=True)
tqdm.pandas()
def parallel_function(row):
return your_computation(row) # Заклинание параллельных вычислений
df.parallel_apply(parallel_function, axis=1) # Добро пожаловать в многомерное пространство.
Интерактивные индикаторы прогресса в Jupyter Notebook
Сделайте свой блокнот в Jupyter более информативным, используя интерактивные индикаторы прогресса:
from tqdm.notebook import tqdm as tqdm_notebook
tqdm_notebook.pandas()
df['result'] = df['data'].progress_apply(your_function) # Визуализация ваших вычислений.
Отслеживание прогресса в реальном времени с использованием логирования
Получайте свежие данные о ходе выполнения операций, воспользуйтесь системой логирования:
import logging
from tqdm.auto import tqdm
tqdm.pandas(logger=logging.getLogger(__name__))
def logging_decorator(func):
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
logging.info(f"Обработано: {tqdm.pandas().n}/{tqdm.pandas().total}") # Статистика в режиме реального времени
return result
return wrapper
@logging_decorator
def your_process_function():
# Реализация функции здесь
pass
df['processed'] = df['data'].progress_apply(your_process_function) # Мониторинг прогресса в работе.
Визуализация
Представьте работу с индикаторами прогресса в pandas, как работу панды:
Визуализируйте, как панда ест бамбук. 🐼🍽️
У нас есть голодная панда и кучка бамбука [════════] 0%
while munching():
update_progress_bar() # Панда активно пережевывает данные, индикатор прогресса заполняется.
Процесс поедания бамбука продолжается [=====> ] 50%
Бамбук съеден: панда довольна [========] 100% 🌟
Воспринимайте каждый укус панды как обработку очередного фрагмента данных pandas, а индикатор прогресса демонстрирует, насколько продвинулся процесс.
Нюансы установки и совместимости
Установка tqdm
Для оптимальной работы tqdm убедитесь, что вы используете последнюю его версию:
pip install "tqdm>=4.9.0"
Если версия tqdm, установленная у вас, старше 4.8, то вместо tqdm.pandas()
следует использовать tqdm_pandas(tqdm())
.
Совместимость версий
Чтобы оставаться в курсе последних обновлений, следите за версиями pandas и tqdm:
import pandas as pd
import tqdm
print(pd.__version__)
print(tqdm.__version__)
Решение возможных проблем при работе с pandas
Работа с большими наборами данных
Очень большие объемы данных могут замедлить работу progress_apply
. В таком случае вы можете:
- Разделить датасет на более мелкие части.
- Использовать Dask для распределенных вычислений с информированием о прогрессе.
- Оптимизировать функции, которые вы применяете к фреймам данных.
Поддержка графических интерфейсов
Если вы работаете в графической оболочке типа SageMaker, вам может пригодиться tqdm.gui
.
Автоматизация импорта
tqdm.auto
автоматически адаптирует импорт для файлов .py
и .ipynb
.