Наверняка вам знакомо ощущение, когда запускаешь тяжёлый запрос в Jupyter — ноутбук будто завис, а ты не понимаешь, идёт ли процесс вообще 🤯 Хочется хотя бы примерно видеть, сколько уже обработалось данных и сколько ещё ждать. И ждать ли вообще!
💡 Тут на помощь приходит библиотека tqdm — она показывает прогресс выполнения прямо в Jupyter или консоли.
Удобно, наглядно - все как мы любим!
Приведу простой примерчик с кодом. Сам sql запрос просто тащит данные из датафрейма df. Но нам тут и не надо мудрить. Нам просто запихнуть какой-то запрос в библиотеку tqdm и видеть процесс в реальном времени 👇
import pandas as pd
import numpy as np
from tqdm import tqdm
from pandasql import sqldf
np.random.seed(42)
df = pd.DataFrame({
"account_id": np.random.randint(1, 100, 50),
"user_id": np.arange(50),
"value": np.random.randint(1, 100, 50)
})
account_ids = df["account_id"].unique()
results = []
with tqdm(total=len(account_ids), desc="Processing", unit="account") as pbar:
for account_id in account_ids:
query = f"""
SELECT account_id, user_id, value
FROM df
WHERE account_id = {account_id}
"""
result = sqldf(query)
results.append(result)
pbar.update(1)
df_result = pd.concat(results, ignore_index=True)
df_result.head()
🧩 Что здесь происходит
🔸 tqdm cоздаёт прогресс-бар. В скобках указываем:
total=len(account_ids) — сколько всего итераций будет;
desc="Processing" — подпись слева («Processing»);
unit="account" — подпись единицы измерения в строке прогресса
🔸 pbar.update(1)
Каждый раз после обработки аккаунта добавляем «+1» к прогрессу.
🔸 sqldf(query)
Ну это база - позволяет писать sql прямо по датафрейму. На работе у каждого свои коннекторы конечно.
🔸 pd.concat(results)
Собирает все маленькие датафреймы обратно в один большой.
✔️ В следующий раз не гадай, «повис ли Юпитер» — пусть tqdm честно покажет, что код жив, пашет и уже почти дошёл до конца!
