AC/tqdm.ipynb

167 lines
29 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "6ac02338-6e18-4fbc-874a-67d98f58cd38",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Запуск обработки данных с tqdm...\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Обработка строк: 100%|\u001b[32m███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████\u001b[0m| 1000/1000 [00:05<00:00, 174.99row/s]\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Обработка завершена!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Общий прогресс: 0%| | 0/5 [00:00<?, ?it/s]\n",
"Этап 1: 0%| | 0/100 [00:00<?, ?it/s]\u001b[A\n",
"Этап 1: 10%|██████████████████ | 10/100 [00:00<00:00, 94.51it/s]\u001b[A\n",
"Этап 1: 20%|████████████████████████████████████▏ | 20/100 [00:00<00:00, 93.67it/s]\u001b[A\n",
"Этап 1: 30%|██████████████████████████████████████████████████████▎ | 30/100 [00:00<00:00, 93.27it/s]\u001b[A\n",
"Этап 1: 40%|████████████████████████████████████████████████████████████████████████▍ | 40/100 [00:00<00:00, 93.07it/s]\u001b[A\n",
"Этап 1: 50%|██████████████████████████████████████████████████████████████████████████████████████████▌ | 50/100 [00:00<00:00, 92.95it/s]\u001b[A\n",
"Этап 1: 60%|████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 60/100 [00:00<00:00, 92.65it/s]\u001b[A\n",
"Этап 1: 70%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 70/100 [00:00<00:00, 91.36it/s]\u001b[A\n",
"Этап 1: 80%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊ | 80/100 [00:00<00:00, 91.22it/s]\u001b[A\n",
"Этап 1: 90%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉ | 90/100 [00:00<00:00, 91.55it/s]\u001b[A\n",
"Этап 1: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [00:01<00:00, 92.34it/s]\u001b[A\n",
"Общий прогресс: 20%|███████████████████████████████████▏ | 1/5 [00:01<00:04, 1.09s/it]\u001b[A\n",
"Этап 2: 0%| | 0/100 [00:00<?, ?it/s]\u001b[A\n",
"Этап 2: 10%|██████████████████ | 10/100 [00:00<00:00, 93.73it/s]\u001b[A\n",
"Этап 2: 20%|████████████████████████████████████▏ | 20/100 [00:00<00:00, 94.35it/s]\u001b[A\n",
"Этап 2: 30%|██████████████████████████████████████████████████████▎ | 30/100 [00:00<00:00, 95.35it/s]\u001b[A\n",
"Этап 2: 40%|████████████████████████████████████████████████████████████████████████▍ | 40/100 [00:00<00:00, 94.90it/s]\u001b[A\n",
"Этап 2: 50%|██████████████████████████████████████████████████████████████████████████████████████████▌ | 50/100 [00:00<00:00, 94.21it/s]\u001b[A\n",
"Этап 2: 60%|████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 60/100 [00:00<00:00, 93.83it/s]\u001b[A\n",
"Этап 2: 70%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 70/100 [00:00<00:00, 93.05it/s]\u001b[A\n",
"Этап 2: 80%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊ | 80/100 [00:00<00:00, 93.72it/s]\u001b[A\n",
"Этап 2: 90%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉ | 90/100 [00:00<00:00, 92.32it/s]\u001b[A\n",
"Этап 2: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [00:01<00:00, 92.27it/s]\u001b[A\n",
"Общий прогресс: 40%|██████████████████████████████████████████████████████████████████████▍ | 2/5 [00:02<00:03, 1.08s/it]\u001b[A\n",
"Этап 3: 0%| | 0/100 [00:00<?, ?it/s]\u001b[A\n",
"Этап 3: 10%|██████████████████ | 10/100 [00:00<00:00, 94.59it/s]\u001b[A\n",
"Этап 3: 20%|████████████████████████████████████▏ | 20/100 [00:00<00:00, 92.75it/s]\u001b[A\n",
"Этап 3: 30%|██████████████████████████████████████████████████████▎ | 30/100 [00:00<00:00, 93.11it/s]\u001b[A\n",
"Этап 3: 40%|████████████████████████████████████████████████████████████████████████▍ | 40/100 [00:00<00:00, 93.59it/s]\u001b[A\n",
"Этап 3: 50%|██████████████████████████████████████████████████████████████████████████████████████████▌ | 50/100 [00:00<00:00, 93.34it/s]\u001b[A\n",
"Этап 3: 60%|████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 60/100 [00:00<00:00, 92.72it/s]\u001b[A\n",
"Этап 3: 70%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 70/100 [00:00<00:00, 92.58it/s]\u001b[A\n",
"Этап 3: 80%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊ | 80/100 [00:00<00:00, 93.01it/s]\u001b[A\n",
"Этап 3: 90%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉ | 90/100 [00:00<00:00, 93.08it/s]\u001b[A\n",
"Этап 3: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [00:01<00:00, 91.88it/s]\u001b[A\n",
"Общий прогресс: 60%|█████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3/5 [00:03<00:02, 1.08s/it]\u001b[A\n",
"Этап 4: 0%| | 0/100 [00:00<?, ?it/s]\u001b[A\n",
"Этап 4: 10%|██████████████████ | 10/100 [00:00<00:00, 94.63it/s]\u001b[A\n",
"Этап 4: 20%|████████████████████████████████████▏ | 20/100 [00:00<00:00, 93.68it/s]\u001b[A\n",
"Этап 4: 30%|██████████████████████████████████████████████████████▎ | 30/100 [00:00<00:00, 93.20it/s]\u001b[A\n",
"Этап 4: 40%|████████████████████████████████████████████████████████████████████████▍ | 40/100 [00:00<00:00, 92.15it/s]\u001b[A\n",
"Этап 4: 50%|██████████████████████████████████████████████████████████████████████████████████████████▌ | 50/100 [00:00<00:00, 92.53it/s]\u001b[A\n",
"Этап 4: 60%|████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 60/100 [00:00<00:00, 92.56it/s]\u001b[A\n",
"Этап 4: 70%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 70/100 [00:00<00:00, 92.67it/s]\u001b[A\n",
"Этап 4: 80%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊ | 80/100 [00:00<00:00, 92.54it/s]\u001b[A\n",
"Этап 4: 90%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉ | 90/100 [00:00<00:00, 92.48it/s]\u001b[A\n",
"Этап 4: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [00:01<00:00, 92.38it/s]\u001b[A\n",
"Общий прогресс: 80%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊ | 4/5 [00:04<00:01, 1.08s/it]\u001b[A\n",
"Этап 5: 0%| | 0/100 [00:00<?, ?it/s]\u001b[A\n",
"Этап 5: 10%|██████████████████ | 10/100 [00:00<00:00, 93.30it/s]\u001b[A\n",
"Этап 5: 20%|████████████████████████████████████▏ | 20/100 [00:00<00:00, 92.38it/s]\u001b[A\n",
"Этап 5: 30%|██████████████████████████████████████████████████████▎ | 30/100 [00:00<00:00, 92.08it/s]\u001b[A\n",
"Этап 5: 40%|████████████████████████████████████████████████████████████████████████▍ | 40/100 [00:00<00:00, 92.83it/s]\u001b[A\n",
"Этап 5: 50%|██████████████████████████████████████████████████████████████████████████████████████████▌ | 50/100 [00:00<00:00, 92.51it/s]\u001b[A\n",
"Этап 5: 60%|████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 60/100 [00:00<00:00, 92.76it/s]\u001b[A\n",
"Этап 5: 70%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 70/100 [00:00<00:00, 92.60it/s]\u001b[A\n",
"Этап 5: 80%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊ | 80/100 [00:00<00:00, 92.75it/s]\u001b[A\n",
"Этап 5: 90%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉ | 90/100 [00:00<00:00, 93.10it/s]\u001b[A\n",
"Этап 5: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [00:01<00:00, 92.48it/s]\u001b[A\n",
"Общий прогресс: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:05<00:00, 1.08s/it]\u001b[A\n"
]
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from tqdm import tqdm\n",
"import time\n",
"\n",
"# 1. Подготовка данных (создаем DataFrame на 1000 строк)\n",
"df = pd.DataFrame({\n",
" 'ID': range(1000),\n",
" 'Data': np.random.randn(1000)\n",
"})\n",
"\n",
"print(\"Запуск обработки данных с tqdm...\")\n",
"\n",
"# 2. Использование tqdm для итерации по DataFrame (iterrows)\n",
"# Добавляем кастомную стилизацию через аргументы:\n",
"# desc — описание процесса\n",
"# unit — единица измерения\n",
"# colour — цвет бара (поддерживается в современных терминалах/ноутбуках)\n",
"for index, row in tqdm(df.iterrows(), \n",
" total=df.shape[0], \n",
" desc=\"Обработка строк\", \n",
" unit=\"row\", \n",
" colour=\"green\"):\n",
" \n",
" # Симуляция сложной обработки данных\n",
" time.sleep(0.005) \n",
" _ = row['Data'] ** 2\n",
"\n",
"print(\"\\nОбработка завершена!\")\n",
"\n",
"# 3. Пример с вложенным циклом и кастомным описанием\n",
"for i in tqdm(range(5), desc=\"Общий прогресс\", position=0):\n",
" for j in tqdm(range(100), desc=f\"Этап {i+1}\", position=1, leave=False):\n",
" time.sleep(0.01)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "991a6680-77de-40b0-a078-c595653cc3ed",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}