<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <language>ru</language>
    <title>Jupyter Notebook</title>
    <description/>
    <link>https://tproger.ru/tag/jupyter-notebook</link>
    <atom:link href="https://tproger.ru/tag/jupyter-notebook/feed" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Mon, 05 Oct 2026 04:01:19 GMT</lastBuildDate>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>12</sy:updateFrequency>
    <image>
      <title>Jupyter Notebook</title>
      <link>https://tproger.ru</link>
      <url>https://tproger.ru/apple-touch-icon.png</url>
    </image>
    <item>
      <title>Как строить диаграммы рассеивания в Python с помощью plt.scatter()</title>
      <link>https://tproger.ru/articles/kak-stroit-diagrammy-rasseyaniya-v-python-s-pomoshhyu-plt-scatter</link>
      <comments>https://tproger.ru/articles/kak-stroit-diagrammy-rasseyaniya-v-python-s-pomoshhyu-plt-scatter?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-stroit-diagrammy-rasseyaniya-v-python-s-pomoshhyu-plt-scatter</guid>
      <description><![CDATA[<p>Разбираем plt.scatter() в Matplotlib. Создаём scatter-графики, настраиваем маркеры по размеру, цвету и форме, используем цветовые карты и фильтруем данные масками.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-stroit-diagrammy-rasseyaniya-v-python-s-pomoshhyu-plt-scatter">Как строить диаграммы рассеивания в Python с помощью plt.scatter()</a>»</p>]]></description>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Jupyter Notebook]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 14 Jun 2026 10:00:21 GMT</pubDate>
      <content:encoded><![CDATA[<h2>Быстрый старт с plt.scatter()</h2><p>Чтобы начать, установите Matplotlib через pip. После этого достаточно импортировать pyplot под стандартным псевдонимом plt, подготовить два массива данных и вызвать plt.scatter(). В обычном скрипте график нужно явно показать через plt.show(), а в Jupyter Notebook или интерактивной консоли это необязательно.</p><p>Полученный график показывает обратную зависимость: чем выше цена, тем ниже средние продажи. При этом напиток за 4.02 выбивается из общей тенденции, что намекает на его особую популярность и требует дальнейшего анализа.</p><h2>plt.scatter() против plt.plot()</h2><p>Тот же базовый график можно построить функцией plt.plot(), передав маркер "o". Однако замеры через timeit обычно показывают, что plt.plot() работает в несколько раз быстрее. Зачем тогда нужен scatter()? Дело в гибкости: только plt.scatter() позволяет задавать индивидуальный размер, цвет и прозрачность для каждой точки.</p><p>Правило простое: для сырых точек без изысков выбирайте plt.plot(), а если нужно раскодировать дополнительные переменные визуально, используйте plt.scatter().</p><h2>Кастомизация маркеров</h2><h3>Размер точек: параметр s</h3><p>Допустим, владелец кофейни хочет добавить на график информацию о марже каждого напитка. Параметр s отвечает за площадь маркера. Чтобы разница была заметна, удобно передать массив значений и отмасштабировать его, например, умножив на 10.</p><h3>Цвет: параметр c</h3><p>Цвет помогает выделить категории. Можно задать его вручную через RGB-кортежи: зелёный для низкого содержания сахара, жёлтый для среднего и красный для высокого. Параметр c принимает список цветов той же длины, что и данные.</p><h3>Форма: параметр marker</h3><p>Когда на одном полотне оказываются два разных набора, важно различать их на глаз. По умолчанию точки рисуются кругами "o", но для второго набора можно выбрать другой символ, например, ромб "d".</p><h3>Прозрачность: параметр alpha</h3><p>Если точки накладываются друг на друга, часть данных становится невидимой. Параметр alpha задаёт прозрачность от 0 до 1. Значение 0.5 делает маркеры полупрозрачными, и совпадающие наблюдения перестают прятаться.</p><h2>Непрерывный цвет и стили</h2><p>Вместо фиксированных RGB-цветов можно передать в c числовой массив и выбрать цветовую карту через cmap. Это превращает маркеры в градиент, а plt.colorbar() добавит шкалу значений. Кроме того, оформление можно поменять глобально: plt.style.use("seaborn-v0_8") применит стилистику, близкую к Seaborn.</p><p>Список доступных стилей возвращает команда plt.style.available. Экспериментируйте с ними, чтобы быстро привести график к единому виду без ручной настройки каждой детали.</p><h2>Продвинутая техника: маскирование данных</h2><p>С помощью булевых массивов NumPy можно разбить точки на группы прямо на графике. Представьте, что вы моделируете расписание автобусов: сгенерировали случайные минуты и вероятности, наложили теоретическое распределение, а затем оставили только те точки, что попадают под кривую.</p><h2>Шпаргалка по параметрам</h2><ul><li>x, y — координаты точек (обязательные аргументы).</li><li>s — размер маркера: одно число или массив значений для каждой точки.</li><li>c — цвет в формате RGB, название или массив чисел для цветовой карты.</li><li>marker — форма точки: 'o' (круг), 'd' (ромб), 'x' (крест) и другие.</li><li>cmap — название цветовой карты, применяется вместе с числовым c.</li><li>alpha — прозрачность от 0 (полностью прозрачный) до 1 (непрозрачный).</li></ul><h2>Выводы</h2><p>Функция plt.scatter() превращает плоскую диаграмму рассеяния в многослойный инструмент анализа. На одном полотне можно одновременно показать цену, объём продаж, прибыльность, категорию товара и его характеристики через размер, цвет и форму маркеров. Для простых задач по-прежнему удобен plt.plot(), но стоит ли задача исследовать сложные взаимосвязи, scatter() становится незаменим.</p>]]></content:encoded>
    </item>
    <item>
      <title>10 библиотек Python, которые меняют карьеру</title>
      <link>https://tproger.ru/articles/10-bibliotek-python--kotorye-menyayut-kareru</link>
      <comments>https://tproger.ru/articles/10-bibliotek-python--kotorye-menyayut-kareru?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Татьяна Жукова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/10-bibliotek-python--kotorye-menyayut-kareru</guid>
      <description><![CDATA[<p>10 библиотек Python, которые помогут прокачаться в аналитике, ML и разработке. Как они работают и почему меняют карьеру.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/10-bibliotek-python--kotorye-menyayut-kareru">10 библиотек Python, которые меняют карьеру</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Парсинг]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[JSON]]></category>
      <category><![CDATA[MySQL]]></category>
      <category><![CDATA[Отладка]]></category>
      <category><![CDATA[Нейронные сети]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[SQL]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Базы данных]]></category>
      <category><![CDATA[Навыки]]></category>
      <category><![CDATA[Django]]></category>
      <category><![CDATA[Сервисы]]></category>
      <category><![CDATA[Jupyter Notebook]]></category>
      <category><![CDATA[Визуализация]]></category>
      <category><![CDATA[Образование]]></category>
      <category><![CDATA[OpenAI]]></category>
      <category><![CDATA[Анализ данных]]></category>
      <category><![CDATA[Бэкенд]]></category>
      <category><![CDATA[Аналитика]]></category>
      <category><![CDATA[Библиотеки]]></category>
      <category><![CDATA[аналитик]]></category>
      <category><![CDATA[PostgreSQL]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 17 Jul 2025 14:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>У Python тысячи библиотек, но лишь немногие действительно меняют карьеру. Они помогают не просто решать задачи, а ускорять проекты, прокачивать навыки и выходить на следующий уровень в аналитике, машинном обучении и разработке. В этом материале мы собрали 10 библиотек, которые помогут зарабатывать на Python и развивать навыки.</p><h2>1. Pandas</h2><p>Pandas — библиотека для работы с данными в Python, позволяющая легко загружать, анализировать, очищать и преобразовывать числовую информацию в удобной табличной форме. По сути, это Excel, который смог, и позволяет делать всё автоматизировано и на порядки быстрее.</p><p>Библиотека строится вокруг двух ключевых структур: <b>Series</b> (одномерный массив с индексами); <b>DataFrame </b>(таблица с индексами и колонками).</p><h3>Какие задачи решает библиотека</h3><p>Pandas полезна для следующих задач:</p><ul><li>Сам анализ данных: можно быстро фильтровать, группировать, агрегировать и строить сводные таблицы.</li><li>Очистка данных: удаляем пустые строки, заменяем значения, приводим типы.</li><li>Загрузка данных из CSV, Excel, SQL.</li><li>Визуальная разведка данных (EDA) перед построением моделей.</li><li>Подготовка данных для ML и отчётов.</li><li>Автоматизация отчётов и ETL-пайплайнов.</li></ul><p>Благодаря Pandas аналитик превращается в инженера данных, а ML-специалист может сосредоточиться на моделях, а не на ручной подготовке датасетов.</p><h3>Как пользоваться</h3><p>Ниже разберём простейший кейс: нужно загрузить данные о зарплатах разработчиков из CSV, посчитать среднюю зарплату по языкам программирования и отобрать топ-5.</p><h3>Почему это меняет карьеру</h3><p>Работа с Pandas становится границей между знанием Python и умением решать задачи бизнеса. Для <b>джуна </b>это шанс сразу показать практическую пользу: выгрузки, отчёты и базовый анализ можно делать в десятки раз быстрее и аккуратнее, чем вручную в эксельке.</p><p>Для <b>аналитика</b> Pandas превращается в главный рабочий инструмент, позволяя не просто проверять гипотезы и делать сводные таблицы, а строить полноценные отчётные пайплайны, автоматизировать рутинные выгрузки и концентрироваться на сути данных, а не на правках ручками.</p><p>Для <b>ML-инженера</b> владеть Pandas — значит уметь готовить датасеты качественно; быстро очищать и приводить данные к нужному виду, что напрямую влияет на результат моделей. Без этого работа над проектами машинного обучения часто превращается в бесконечную возню с данными.</p><p>Наконец, даже для <b>разработчиков</b> Pandas может стать неожиданным бустом в карьере. Например, когда нужно автоматизировать отчёты для бизнеса или быстро анализировать логи и данные из БД без поднятия дашбордов — Pandas даёт гибкость и скорость, которые редко даёт что-то ещё в экосистеме Python.</p><h2>2. Django</h2><p>Django — фреймворк для веб-разработки на Python, который позволяет быстро создавать надежные и масштабируемые веб-приложения. Он следует принципам DRY (Don’t Repeat Yourself — не повторяй себя), предоставляя разработчику ORM, роутинг, систему авторизации, админку, работу с формами, шаблонами и инструментами безопасности из коробки.</p><p>Django подходит как стартапам, которым нужно быстро выйти на рынок, так и крупным проектам с миллионами пользователей. Это не просто библиотека, а полноценный каркас для построения и сопровождения веб-сервисов.</p><h3>Какие задачи решает библиотека</h3><p>Каркас, действительно, каркасный. Задачи следующие:</p><ul><li>Создание веб-приложений и API любой сложности.</li><li>Быстрая разработка MVP, прототипов и коммерческих проектов.</li><li>Упрощение работы с базами данных через ORM, без написания сырого SQL.</li><li>Построение административных панелей для управления данными без ручной разработки.</li><li>Гибкая маршрутизация и работа с формами, валидацией и шаблонами.</li><li>Реализация аутентификации, авторизации и защиты приложений.</li></ul><p>Django позволяет сосредоточиться на бизнес-логике и продукте, не тратить недели на настройку инфраструктуры.</p><h3>Как пользоваться</h3><p>Устанавливаем:</p><p>Создаем проект и приложение:</p><p>Пример модели:</p><p>Миграция базы данных:</p><p>Создание админки:</p><p>После этого можно запустить сервер:</p><p>И перейти по адресу http://127.0.0.1:8000/admin для управления записями через готовую админ-панель.</p><h2>3. PyTorch</h2><p>PyTorch — мощная библиотека Python. Она позволяет строить и обучать нейронные сети, проводить вычисления с автоматическим дифференцированием и работать с GPU для ускорения самих вычислений.</p><p>Главное отличие PyTorch от других ML-фреймворков — динамическая вычислительная графика (define-by-run): модель строится и изменяется во время выполнения кода, что даёт гибкость при создании и отладке сложных моделей.</p><p>Сегодня PyTorch используется в продакшен системах, научных исследованиях, компьютерном зрении, NLP и генеративных моделях, занимая ведущее место в индустрии.</p><h3>Какие задачи решает библиотека</h3><p>В функционал PyTorch входят:</p><ul><li>Построение нейронных сетей любой сложности (CNN, RNN, трансформеры);</li><li>Обучение и тестирование моделей на CPU и GPU;</li><li>Реализация кастомных слоёв и loss-функций;</li><li>Разработка и деплой ML/AI моделей в продакшен;</li><li>Быстрая итерация гипотез с удобной отладкой.</li></ul><p>С PyTorch можно начать с простых нейронных сетей, а затем перейти к реализации современных архитектур.</p><h3>Как пользоваться</h3><p>Установим PyTorch (на CPU, для GPU потребуется версия с CUDA):</p><p>Рассмотрим кейс обучения простой нейронной сети для классификации рукописных цифр MNIST.</p><p>После обучения можно использовать torch.save() для сохранения модели и torch.load() для загрузки в продакшн.</p><h3>Почему это меняет карьеру</h3><p>PyTorch — билет в мир современной разработки AI и машинного обучения. Владение инструментом даёт <b>разработчику</b> возможность уверенно войти в области, которые продолжают оставаться топовыми на рынке: искусственный интеллект, компьютерное зрение, NLP, генерация изображений и видео и т.д.</p><p>Для <b>начинающего ML/AI-специалиста </b>PyTorch помогает лучше понять, как устроены нейронные сети, и под капотом увидеть, как происходят вычисления. Это ускоряет рост навыков и делает разработчика востребованным в исследованиях и R&amp;D-проектах.</p><p>Для <b>дата-сайентистов</b> PyTorch позволяет превратить исследовательские ноутбуки в готовые к деплою модели, благодаря PyTorch Lightning, TorchScript и ONNX.</p><p>Для<b> разработчиков, которые хотят выйти на рынок AI</b>, PyTorch — это мастхев: проекты в стартапах и крупных компаниях всё чаще строятся вокруг него. Умение писать кастомные loss-функции, проектировать сложные пайплайны обучения, настраивать обучение на кластерах и GPU — компетенции, которые существенно бустят зарплату.</p><p>PyTorch в целом помогает расширять портфолио: с ним можно создавать генеративные модели, строить LLM, участвовать в соревнованиях и работать с самыми современными подходами в машинном обучении.</p><h2>4. Polars</h2><p>Polars — современная библиотека для обработки данных в Python, созданная как альтернатива Pandas. Она использует колоночную архитектуру и многопоточность, что позволяет работать с большими объёмами данных значительно быстрее и с меньшим потреблением памяти.</p><p>Polars вдохновлена Pandas, но её API оптимизировано для производительности и удобства, а также даёт разработчику возможность писать цепочки ленивых вычислений, которые оптимизируются перед выполнением. Это делает её отличным инструментом для аналитиков, дата-инженеров и дата-сайентистов, которым нужно обрабатывать данные быстро.</p><h3>Какие задачи решает библиотека</h3><p>Polars явно есть, чем гордиться:</p><ul><li>Загрузка, очистка и преобразование больших датасетов;</li><li>Анализ данных с использованием цепочек преобразований;</li><li>Быстрая агрегация и группировка данных;</li><li>Ленивые вычисления: построение пайплайнов преобразования данных, которые выполняются только при вызове collect().</li><li>Обработка данных, которые не помещаются в память, за счёт эффективности и колоночной архитектуры.</li></ul><p>Если Pandas начинает притормаживаться на данных в несколько гигабайт, Polars обычно продолжает работать быстро, позволяя без боли обрабатывать большие CSV.</p><h3>Как пользоваться</h3><p>Установка:</p><p>Давайте загрузим данные и проведем базовые трансформации:</p><p>А вот и пример ленивых вычислений:</p><p>В чем особенность:</p><ul><li>pl.read_csv загружает данные сразу.</li><li>pl.scan_csv создаёт план вычислений для последующей оптимизации.</li><li>Используются выражения (pl.col, .with_columns, .agg), которые композируются без создания промежуточных копий, это ускоряет процесс.</li></ul><h3>Почему это меняет карьеру</h3><p>Polars меняет карьеру, потому что даёт преимущество в скорости и эффективности при работе с данными. Там, где Pandas уже не справляется, полярный медведь приходит на помощь.</p><p>Для <b>дата-инженеров</b> Polars полезен при построении ETL и пайплайнов обработки данных, где важна скорость и предсказуемое потребление ресурсов. Его можно использовать в продакшен-скриптах, для подготовки данных к ML и для автоматизации отчётности.</p><p>Для <b>дата-сайентистов </b>Polars даёт возможность анализировать больше данных за меньшее время, быстро итерировать гипотезы и ускорять исследования. Его API достаточно близок к Pandas, поэтому переход не требует месяцев переучивания.</p><p>Освоение Polars показывает работодателям, что ты не просто знаешь стандартные инструменты, но умеешь выбирать оптимальные решения для реальных задач, повышая эффективность работы команды. В эпоху роста данных это критично для любого Python-разработчика, работающего с аналитикой и машинным обучением.</p><h2>5. FastAPI</h2><p>FastAPI — современный фреймворк для создания API на Python, заточенный под скорость, асинхронность и валидацию данных из коробки. Он построен на Starlette и Pydantic, автоматически создаёт OpenAPI-документацию, поддерживает асинхронное программирование и позволяет писать производительные REST и WebSocket API с минимальным количеством кода.</p><p>Вместо долгой настройки, как у Flask или Django, в FastAPI многое готово изначально: удобная работа с запросами и ответами, декларативная валидация, документация Swagger, асинхронность и высокая производительность без лишних усилий.</p><h3>Какие задачи решает</h3><p>Задач, действительно, много:</p><ul><li>Быстрая разработка REST API для мобильных и веб-приложений;</li><li>Создание бэкенда для ML/DS моделей (деплой моделей в виде API);</li><li>Построение микросервисов с хорошей производительностью;</li><li>Реализация websocket-серверов и асинхронных API;</li><li>Подготовка внутренних инструментов или бэкендов для MVP.</li></ul><p>FastAPI помогает быстро запускать API и уверенно масштабировать его в полевых условиях. Это один из немногих фреймворков Python, который по скорости работы сопоставим с Node.js и Go.</p><h3>Как пользоваться</h3><p>Во-первых, нужно установить FastAPI и Uvicorn (используем ASGI-сервер для запуска):</p><p>Простейший API-пример с эндпоинтом GET /:</p><p>Запускаем сам сервер:</p><p>После запуска API будет доступен по адресу http://127.0.0.1:8000/. Автоматически доступна интерактивная документация Swagger по адресу http://127.0.0.1:8000/docs.</p><p>FastAPI поддерживает валидацию параметров запроса, тел запросов и путей прямо через типы Python. Например, простой эндпоинт с параметром:</p><p>При вызове http://127.0.0.1:8000/items/10?q=test FastAPI автоматически проверит, что item_id — это число, и распарсит q как строку.</p><h3>Почему это меняет карьеру</h3><p>FastAPI — билет в мир бэкенда, где скорость и чистота кода имеют довольно высокое значение. Для <b>Python-разработчика </b>это возможность быстро освоить создание API и микросервисов, не увязнув в громоздкой настройке, как в Django, и при этом получить систему, готовую к продакшену.</p><p>Для <b>ML-специалиста</b> FastAPI становится инструментом для деплоя моделей: можно обернуть пайплайн предсказаний в API, подключить авторизацию или логирование и получить работающий сервис за считанные дни.</p><p>Вообще умение быстро поднимать и поддерживать API — навык, который ценят в бигтехе и стартапах. На разработчиков, которые владеют FastAPI, часто равняются: они умеют превращать идеи бизнеса в работающие сервисы за минимальное время.</p><h2>6. Typer</h2><p>Typer — современная библиотека для создания CLI-приложений на Python с минимальным количеством кода и автоматической генерацией документации. Автор библиотеки — Себастьян Рамирес, создатель FastAPI.</p><p>Главная особенность Typer — использование type hints для автоматического парсинга аргументов командной строки. Вы получаете удобную и читаемую CLI с поддержкой автодополнения и цветного вывода за считанные минуты.</p><h3>Какие задачи решает библиотека</h3><p>Список задач такой:</p><ul><li>Создание CLI-утилит любого уровня сложности.</li><li>Быстрое прототипирование и упаковка Python-скриптов в удобные инструменты для продакшена.</li><li>Генерация подробной справки (--help) и автодополнения команд.</li><li>Облегченная поддержка и масштабирование CLI за счёт структуры и читаемого кода.</li><li>Организация CLI с подкомандами, вложенными аргументами и обработкой ошибок.</li></ul><p>Typer использует аннотацию типов и минимум шаблонного кода.</p><h3>Как пользоваться</h3><p>Установка:</p><p>Пример минимальной CLI:</p><p>Теперь можно запустить из консоли:</p><p>Результат будет такой: Привет, Алиса! Тебе 25 лет.</p><h3>Почему это меняет карьеру</h3><p>Typer меняет карьеру тем, что открывает путь к созданию удобных CLI-инструментов, которые автоматизируют рутину и повышают продуктивность.</p><p>С Typer можно быстро превращать свои Python-скрипты в надежные утилиты, которыми удобно пользоваться и другим разработчикам, и сотрудникам из других отделов. CLI-приложения часто становятся клеем инфраструктуры: они позволяют автоматизировать деплой, миграции БД, сбор данных, интеграцию с внешними API и локальную разработку.</p><p>Если вы <b>Data Scientist или ML-инженер</b>, Typer позволяет оборачивать пайплайны в CLI, которые легко запускать из Jenkins, Airflow или вручную. Если вы <b>DevOps или Backend-инженер</b>, можете создавать CLI для работы с инфраструктурой и сервисами без сложных зависимостей.</p><p>Кроме того, работа с Typer улучшает навык структурирования кода, понимание CLI, использования type hints и разработки инструментов, которые делают работу проще для других. А это, очевидно, ценится в любой команде и повышает востребованность специалиста.</p><h2>7. Rich</h2><p>Rich — библиотека Python для красивого форматирования и интерактивного отображения информации в терминале. С её помощью можно выводить цветные таблицы, маркдаун, прогресс-бары, подсвеченный синтаксис кода, деревья каталогов и логирование в понятной и привлекательной форме.</p><p>Rich создана для того, чтобы «оживить» консоль Python, сделать логи удобными для восприятия, а CLI-инструменты — профессионально выглядящими без лишних усилий. Это библиотека, которая улучшает и UX, и DX.</p><h3>Какие задачи решает</h3><p>Про красоту не забываем! Задачи следующие:</p><ul><li>Цветное и структурированное логирование, понятное при чтении логов в реальном времени.</li><li>Отображение прогресс-баров для долгих операций.</li><li>Вывод таблиц, деревьев каталогов, JSON прямо в терминале.</li><li>Подсветка синтаксиса кода для CLI-инструментов.</li><li>Создание CLI-интерфейсов, которые выглядят профессионально и современно.</li><li>Улучшение читаемости при отладке скриптов.</li></ul><p>С помощью Rich можно быстро сделать понятными даже сложные данные при отладке или демонстрации.</p><h3>Как пользоваться</h3><p>Установка Rich:</p><p>Для примера выведем таблицу с подсветкой в консоли:</p><p>В результате в терминале получится цветная таблица, которая выглядит понятно и презентабельно.</p><h3>Почему это меняет карьеру</h3><p>Rich — это библиотека, которая помогает быстро повысить качество любого CLI-инструмента или дев-опыт в команде. <b>Разработчик</b>, который использует Rich, делает свои инструменты удобными не только для себя, но и для коллег: логирование становится понятным, а отладка скриптов — наглядной.</p><p>Во многих стартапах и продвинутых командах важна скорость обратной связи при тестировании пайплайнов и автоматизаций, и Rich помогает выводить ключевую информацию максимально читаемо.</p><p>Кроме того, Rich позволяет быстро создавать CLI-интерфейсы, которые выглядят как продакшен-продукты, даже если это внутренние инструменты. Руководство будет радоваться и думать о вас как о крутом разрабе.</p><p>Для <b>дата-инженеров и разработчиков DevOps</b> Rich полезна при создании админ-утилит и при мониторинге пайплайнов, для <b>Python-разработчиков</b> — при создании библиотек и фреймворков с CLI.</p><h2>8. LangChain</h2><p>LangChain — фреймворк для создания приложений на базе LLM, например, GPT, Claude, Mistral, Gemini. Он позволяет строить цепочки обработки запросов, интегрировать LLM с данными и инструментами, добавлять память и управление состояниями, а также связывать работу модели с внешними API и базами знаний.</p><p>LangChain предоставляет удобный слой абстракции над вызовами LLM и ускоряет разработку чат-ботов, RAG-приложений, агентов с инструментами, систем анализа документов и других AI-сервисов.</p><h3>Какие задачи решает</h3><p>Список внушительный:</p><ul><li>Интеграция LLM в Python-приложения без необходимости писать тот самый клеевой код вручную.</li><li>Построение цепочек с последовательной обработкой сообщений, включая преобразования и вызовы внешних функций.</li><li>Добавление памяти в чат-боты для сохранения истории общения и контекста.</li><li>Использование агентов для динамического вызова инструментов (веб-поиск, базы данных, API).</li><li>Создание RAG-систем с интеграцией LLM и векторных БД.</li><li>Быстрая сборка прототипов LLM-приложений, которые можно развернуть в продакшен.</li></ul><h3>Как пользоваться</h3><p>Установка:</p><p>Создадим простую цепочку с чатом GPT:</p><p>Благодаря единым абстракциям, можно гибко комбинировать цепочки, память и вызов внешних инструментов, не усложняя код.</p><h3>Почему это меняет карьеру</h3><p>LangChain меняет карьеру, потому что открывает новый пласт Python-разработки в AI и LLM-инженерии, быстро превращая пользователя GPT в создателя полноценных AI-приложений. Вместо того чтобы писать хаотичный клеевой код, вы начинаете системно проектировать цепочки запросов, учитесь строить продуманные промпты и объединять их с инструментами, памятью и внешними API.</p><p>Работа с LangChain погружает в практическую LLM-инженерию: вы начинаете создавать RAG-приложения, которые умеют искать и анализировать данные перед генерацией ответа и строить агентов. Это востребовано в продуктах, где нужно подключать ИИ к базам знаний, автоматизировать задачи и разрабатывать интерактивные системы, которые реально используют модели в продакшене.</p><p>LangChain позволяет быстро собирать и запускать MVP AI-продуктов, что дает конкурентное преимущество при создании стартапов или внутренних сервисов. А ещё учит мыслить структурами и проектировать масштабируемую архитектуру LLM-приложений и видеть, как генеративный ИИ можно превратить в рабочий инструмент.</p><h2>9. SQLAlchemy</h2><p>SQLAlchemy — это мощная ORM и toolkit для работы с базами данных в Python, позволяющая писать SQL-запросы декларативно, создавать модели таблиц и управлять транзакциями в Python-коде без ручного написания SQL.</p><p>Библиотека даёт разработчику два уровня контроля:</p><ul><li>Core: низкоуровневая работа с SQL выражениями и соединениями;</li><li>ORM: высокоуровневая декларативная работа с моделями, классами и связями между таблицами.</li></ul><p>SQLAlchemy поддерживает PostgreSQL, MySQL, SQLite, Oracle и другие СУБД, давая единую абстракцию, без привязки к конкретному движку.</p><h3>Какие задачи решает</h3><p>Пул задач следующий:</p><ul><li>Описание таблиц в виде Python-классов и управление ими через сессии;</li><li>Создание, чтение, обновление и удаление данных;</li><li>Миграция SQL на декларативный стиль без потери гибкости;</li><li>Полный контроль над транзакциями и выполнением запросов;</li><li>Работа с асинхронными приложениями при создании FastAPI/Django-приложений;</li><li>Экранирование параметров, которое снижает вероятность SQL-инъекций и ошибок.</li></ul><h3>Как пользоваться</h3><p>Создадим минимальный пример для SQLite с таблицей пользователей:</p><p>Этот код создаёт базу example.db, таблицу users, добавляет туда одного пользователя и выводит всех пользователей в базе. При необходимости можно использовать SQLAlchemy Core для написания гибких запросов вручную, если нужно работать ближе к SQL.</p><h3>Почему это меняет карьеру</h3><p>SQLAlchemy меняет карьеру <b>Python-разработчика</b> тем, что даёт понимание системной работы с данными, архитектуры приложений и взаимодействия с реальными базами данных. Вы учитесь строить продуманные бэкенды, которые работают с транзакциями, миграциями, связями между таблицами и сложными выборками.</p><p>Знание SQLAlchemy открывает дорогу в мир API, микросервисов и продуктов, где требуется качественное управление данными и гибкая логика работы с БД. Работа с SQL теперь совсем не страшная.</p><h2>10. Seaborn</h2><p>Seaborn — библиотека для визуализации данных на Python, построенная поверх Matplotlib и упрощающая создание информативных и стильных графиков с минимальным количеством кода.</p><p>Она автоматически заботится о красивых стилях, цветах, разметке графиков, легендах и позволяет легко строить распределения, линейные графики, тепловые карты и другие визуализации.</p><p>Библиотека тесно интегрируется с Pandas DataFrame, позволяя использовать колонки данных напрямую для построения графиков, что делает её идеальной для EDA (разведочного анализа данных) и подготовки визуализаций для отчётов и презентаций.</p><h2>Какие задачи решает</h2><p>Визуализация безумно важна, особенно в контексте дата-аналитики. Seaborn отвечает за:</p><ul><li>Быстрое построение информативных графиков для анализа данных и поиска инсайтов;</li><li>Автоматическую обработку ошибок отображения и масштабирования, что экономит время;</li><li>Поддержку сложных визуализаций по типу ящиков с усами или тепловых карт без десятков строк кода;</li><li>Стилизацию графиков без ручных настроек Matplotlib;</li><li>Возможность добавлять статистические элементы (линию регрессии, KDE, распределение);</li><li>Интеграцию с Jupyter Notebook для интерактивного анализа данных.</li></ul><h3>Как пользоваться</h3><p>Допустим, у нас есть датасет с данными о чаевых:</p><p>В три строки мы получаем чистый и читаемый ящик с усами, показывающий, как счет за ужин распределяется по дням недели.</p><p>Для построения более сложных графиков можно использовать диаграмму рассеяния:</p><p>Тут мы добавляем цветовую кодировку по полу, чтобы увидеть зависимости между переменными.</p><h3>Почему это меняет карьеру</h3><p>Seaborn меняет карьеру, потому что даёт навык визуального анализа данных, что критично в современной аналитике и дата-инженерии. Умение быстро строить графики и видеть аномалии, распределения и взаимосвязи между переменными превращает работу с данными из слепого копания в числах в структурный анализ.</p><p>Использование Seaborn в Python-стеке помогает выделиться среди разработчиков, которые ограничиваются Pandas и текстовыми логами, ведь визуализация часто позволяет быстрее заметить закономерности и убедить команду или заказчика в правильности гипотезы.</p><p>Seaborn также учит пониманию данных через визуальные паттерны, что улучшает навыки построения моделей машинного обучения (так понятнее, какие признаки важны), и помогает создавать наглядные отчёты для продуктовых решений, где результат анализа нужно доносить до людей не из айти-индустрии.</p><p><i>А какими библиотеками пользуетесь вы? Делитесь в комментариях!</i></p>]]></content:encoded>
    </item>
    <item>
      <title>Топ самых полезных магических команд для завсегдатаев Colab</title>
      <link>https://tproger.ru/articles/top-samyh-poleznyh-magicheskih-komand-dlya-zavsegdataev-colab</link>
      <comments>https://tproger.ru/articles/top-samyh-poleznyh-magicheskih-komand-dlya-zavsegdataev-colab?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Лена Капаца]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/top-samyh-poleznyh-magicheskih-komand-dlya-zavsegdataev-colab</guid>
      <description><![CDATA[<p>Составили подборку из 9 команд для Google Colab или Jupyter Notebook, показали, как они работают на примерах, а также дополнили фишечками.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/top-samyh-poleznyh-magicheskih-komand-dlya-zavsegdataev-colab">Топ самых полезных магических команд для завсегдатаев Colab</a>»</p>]]></description>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Jupyter Notebook]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 08 Jul 2023 08:26:11 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если вы пользуетесь на повседневной основе в средами вроде Google Colab или Jupyter Notebook, то наверняка хотя бы раз сталкивались с “магическими” командами. В статье я  не только перечислю самые полезные из них, но и покажу, как они работают на примерах, а также дополню фишечками.</p><h2>%lsmagic</h2><p>Чтобы не тратить драгоценный умственный ресурс, запомните всего одну директиву – вывести список всех команд. Запустив %lsmagic,  получаем вот такой интересный список:</p><p>Magic Commands – это часть IPython, интерактивной оболочки с дополнительными командами, подсветкой кода и автодополнением. Команды выполняют разнообразные вспомогательные операции. Те, что начинаются с одного символа “%”, применяются к одной строке, другие — ко всей ячейке. Давайте разберем самые полезные “колабисту” мэджики.</p><h2>%%time</h2><p>Измеряет время выполнения ячейки. Это незаменимая утилита при оценке качества рефакторинга. Допустим, вы узнали, что цикл for замедляет код и переписали некоторый участок на перечисление (enumeration). Используя %%time, вы сможете с легкостью оценить прирост в общей скорости исполнения кода. Покажу на примере.</p><p>Объявим наш итерируемый список:</p><p>Замерим скорость итерации списка циклом while:</p><p>Ячейка выведет, помимо самих элементов списка, еще и время, затраченное на исполнение сниппета – 99 µs (миллионной доли секунды):</p><p>Перепишем код на функцию enumerate():</p><p>Получается, что на маленьких списках while даже выигрывает у enumerate (99 микросекунд против 123).</p><h2>%%capture</h2><p>Cкрывает выходные данные ячейки. Это полезно в разделе, где вы устанавливаете необходимые библиотеки: сводка процесса установки занимает много места и часто не является важной информацией, так что ее можно скрыть.</p><h2>%autoawait</h2><p>Позволяет использовать <i>параллельные</i> процессы. Ультраполезная фича, когда речь заходит о предварительной обработке данных, где на одном конвейере предстоит обработать разные столбцы крупного датафрейма:</p><p>В следующей ячейке запускаем магическую команду:</p><p>На выходе получаем параллельно исполненные ячейки:</p><h2>%debug</h2><p>Активируeт интерактивный отладчик.</p><p>Эта команда поддерживает два способа активации: перед выполнением кода (точка останова) и post-mortem (“посмертно”). Второй режим вы можете активировать, запустив %debug без каких-либо аргументов. Если только что произошло исключение, это позволит в интерактивном режиме проверить путь ошибки:</p><p>Ячейка не выведет цифру пять, хоть последняя часть функции этого и требует. Строка с print() будет исполнена, если прервать отладку, нажав на кнопку стоп:</p><h2>%pip</h2><p>Множество сторонних библиотек подключается к проекту именно этой командой.</p><p>Вот интересная фишка: помимо установки модуля по названию:</p><p>вы можете устанавливать некоторые инструменты с помощью ссылки на репозиторий.</p><p>В последнее время для одной из библиотек, которую использую при предварительном анализе данных – pandas_profiling, наблюдалась проблема установки стандартным способом. А вот с инсталляцией по ссылке все работает:</p><h2>%precision</h2><p>Указывает число знаков после запятой (decimal number) для числовых объектов.</p><h2>%rerun</h2><p>Перезапускает предыдущую ячейку. В моей практике это полезно, чтобы пересобрать, к примеру, эмоциональную окраску (позитивная / негативная) реплики пользователя на базе библиотеки dostoevsky. Но пример приведу чуть проще:</p><h2>%%html</h2><p>Отрендерит ячейку как код HTML. Таким же образом исполнит код на Javascript, Perl или Ruby! Вот это действительно удивительное дополнение. Только используйте с осторожностью!</p><p>Более того, для учебы нередко пригождается верстка формул на специальном стандарте LaTeX, или справочной информации на Markdown. Для самых креативных предусмотрели даже рендеринг из .svg.</p><h2>Заключение</h2><p>Помню, на учебе пару раз выполнила некоторые из магических команд. И забыла до тех пор, пока случайно не наткнулась снова и не влюбилась окончательно.</p><p>Со временем стало ясно, почему команды назвали магическими. Они очень полезны для выполнения различных системных операций прямо из ячеек ноутбука, а также для оптимизации вашего кода и анализа производительности.</p><p>Попробуйте во время работы в ноутбуке подыскать какую-нибудь специфическую потребность, и вы убедитесь – многие из таких решаются силами IPython.</p><p>Если вы хотите поиграться командами, то в я собрала их в <a href="https://colab.research.google.com/drive/1EqnraCgraVCHisAM_GXWSy37OMHVcztl#scrollTo=9rs35hgNCOv2">отдельный ноутбук</a>, не требующий дополнительной настройки.</p>]]></content:encoded>
    </item>
    <item>
      <title>Обновление JupyterLab 4.0 — что изменилось</title>
      <link>https://tproger.ru/articles/jupyterlab-4-0-chto-izmenilos</link>
      <comments>https://tproger.ru/articles/jupyterlab-4-0-chto-izmenilos?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Рафаил Агазода]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/jupyterlab-4-0-chto-izmenilos</guid>
      <description><![CDATA[<p>Разработчики Jupyter объявили о выпуске JupyterLab 4.0 - крупного обновления IDE. Рассказываем, что изменилось в новой версии.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/jupyterlab-4-0-chto-izmenilos">Обновление JupyterLab 4.0 — что изменилось</a>»</p>]]></description>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Jupyter Notebook]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 21 Jun 2023 08:06:43 GMT</pubDate>
      <content:encoded><![CDATA[<p>Разработчики Jupyter объявили о выпуске JupyterLab 4.0 – крупного обновления полнофункциональной среды разработки. Пакет доступен на PyPI и conda-forge.</p><p>Вы можете обновиться, выполнив команду pip install --upgrade jupyterlab или conda install -c conda-forge jupyterlab.</p><p>Также <a href="https://jupyterlab.readthedocs.io/en/latest/index.html">была обновлена документация JupyterLab</a> для версии 4.0. Далее мы рассмотрим некоторые изменения в JupyterLab и новые функции.</p><h2>JupyterLab стал быстрее</h2><p>Скорость работы стала выше благодаря оптимизации правил CSS, использования CodeMirror 6, MathJax 3 и окон для блокнотов.</p><p>Теперь отображаются только те частей блокнота, которые помещаются в окне браузера, поэтому JupyterLab 4 стал более эффективным по сравнению с JupyterLab 3 при работе с большими проектами.</p><p>Вы можете улучшить производительность в настройках, протестировав новые функции:</p><ol><li>Более быстрая смена вкладок в браузерах на основе Chromium: “Настройки” -&gt; “Оболочка JupyterLab” -&gt; переключите “Скрытый режим” на “contentVisibility”.</li><li>Лучшая производительность с большими проектами: “Настройки” -&gt; “Блокнот” -&gt; переключите “Режим окон” на “full”.</li></ol><h2>Улучшенный редактор CodeMirror в JupyterLab</h2><p>CodeMirror, текстовый редактор, был обновлен до версии <a href="https://codemirror.net/">CodeMirror 6</a>. В новой версии редактора улучшены его доступность и производительность, а также добавлены гибкие возможности настройки.</p><p>Функция совместной работы RTC перенесена в отдельный пакет jupytercollaboration. Он включает отображение нескольких курсоров и выделений, а также поддерживает регистрацию новых типов общих моделей.</p><p>Если вы хотите использовать RTC в JupyterLab 4, установите пакет jupytercollaboration.</p><h2>Новый менеджер расширений в JupyterLab 4</h2><p>В JupyterLab 4 Менеджер расширений включает как заранее созданные расширения Python, так и <a href="https://pypi.org/search/?c=Framework+%3A%3A+Jupyter+%3A%3A+JupyterLab">расширения с pypi.org</a>. Расширения из PyPI не нуждаются в сборке при установке через Менеджер.</p><p>Разработчики могут добавить альтернативный репозиторий пакетов для отображения своего набора расширений.</p><h2>Улучшенный поиск документов</h2><p>Поиск и замена контента улучшены новыми возможностями.</p><p>Среди них подсветка совпадений в отформатированных ячейках markdown, поиск в текущем выделении, поиск по нескольким строкам, замена с сохранением регистра, и так далее.</p><h2>Улучшения UI-интерфейса JupyterLab</h2><p>Дизайнеры JupyterLab переработали секцию активных ядер, кнопку «Добавить новую ячейку», диалоговое окно для сочетаний клавиш и отображение первой строки в свернутых ячейках ввода и вывода.</p><h2>Обновления средств разработки</h2><p>Средства разработки обновились до TypeScript v5, Yarn v3, React v18 и Lumino v2.</p><p>Также рекомендуется использовать Node.js 18 или выше, чтобы получать обновления как минимум до конца 2023 года.</p><h2>Исправление багов</h2><p>Были исправлены более 100 ошибок в JupyterLab, улучшены стабильность и производительность. Полный список исправлений можно <a href="https://github.com/jupyterlab/jupyterlab/releases/tag/v4.0.0rc0">найти на GitHub</a>.</p><h2>Новые функции в JupyterLab</h2><p>В редакторе настроек двойного режима теперь доступен редактор JSON и новый  интерактивный режим на основе React JSON Schema. Этот режим делает настройку доступной для пользователей любого уровня.</p><p>Панель инструментов ячейки — это интерфейс для быстрой манипуляции ячейками, который предоставляет альтернативу горячим клавишам или редактированию через функции из выпадающего меню.</p><p>Также уведомления теперь приходят и от расширений, и от самого JupyterLab для мгновенных объявлений, предупреждений и обновлений. Объявления от команды JupyterLab, включая уведомления о новых версиях, могут быть отключены.</p><p>Кроме того, несколько функций из JupyterLab 4 также были обратно портированы в JupyterLab 3.6, но если вы обновляетесь с версии 3.5 или более ранней, они будут новыми для вас.</p><p>JupyterLab – это среда разработки и интерактивного анализа данных, которая предоставляет удобный и мощный пользовательский интерфейс для работы с Jupyter notebooks, файлами кода, данных и визуализацией.</p><p>Надеемся, обновления сделают вашу работу ещё удобнее и приятнее!</p>]]></content:encoded>
    </item>
    <item>
      <title>Как оптимизировать работу в Jupyter Notebook</title>
      <link>https://tproger.ru/translations/how-to-optimize-jupyter-notebook</link>
      <comments>https://tproger.ru/translations/how-to-optimize-jupyter-notebook?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Klara Oswald]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/how-to-optimize-jupyter-notebook</guid>
      <description><![CDATA[<p>Полезные команды, расширения и немного магии для веб-оболочки, которая поддерживает Julia, Python и R, — чтобы разработка шла быстрее и проще.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/how-to-optimize-jupyter-notebook">Как оптимизировать работу в Jupyter Notebook</a>»</p>]]></description>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Jupyter Notebook]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 07 Jul 2019 14:25:33 GMT</pubDate>
      <content:encoded><![CDATA[<p>Jupyter Notebook (ранее известный как IPython Notebook) — веб-оболочка для нескольких языков программирования: Julia, Python и R. Это одна из множества технологий, которые позволяют делать жизнь людей проще и лучше. Но установка пакета — только начало, есть множество вещей, которые можно доработать, чтобы сделать процесс разработки ещё удобнее.</p><p>В этой статье предполагается, что вы мало знакомы с Jupyter Notebook. Прежде чем мы перейдём к более хитрым трюкам, речь пойдёт о базовых вещах.</p><p>Если вы только открываете для себя эту тему, лучше сначала изучить вопрос с установкой и работой Anaconda.</p><h2>Начало работы</h2><p>После установки можно сразу приступить к работе. Для этого необходимо выполнить следующее:</p><h3>Смена темы оформления</h3><p>Чтобы настроить многими любимый тёмный режим, нужно зайти в терминал и установить Jupyterthemes:</p><p>Теперь можно установить тёмную тему:</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_3f2DEcFNS_tiV9NqYgwlow.jpg" alt="" /></figure><p>Восстановить основную тему можно в любое время:</p><p>Найти Jupyterthemes можно в <a href="https://github.com/dunovank/jupyter-themes">репозитории</a> на GitHub.</p><h2>Основные команды</h2><p>Быстро получить доступ к сочетаниям клавиш можно с помощью комбинаций Ctrl+Shift+P или Cmd+Shift+P, тогда откроется диалоговое окно, похожее на Spotlight Search на Mac. Это поможет вам запустить любую команду по имени, что очень удобно, когда ещё не знаешь нужного сочетания клавиш.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_Sryf0rLknt9dKZjR0D4FwQ.jpg" alt="" /></figure><p>Shift+Enter позволяет запустить текущую ячейку.</p><p>Esc переводит в командный режим. Он позволяет перемещаться по документу с помощью клавиш-стрелок.</p><p>В командном режиме можно использовать:</p><ul><li>А, чтобы вставить новую ячейку над текущей ячейкой;</li><li>B, чтобы вставить новую ячейку под текущей ячейки;</li><li>M, чтобы изменить текущую ячейку на Markdown;</li><li>Y, чтобы перейти обратно в кодовую ячейку;</li><li>D+D (двойное нажатие клавиши), чтобы удалить текущую ячейку;</li><li>Enter, чтобы вернуться из командного режима в режим редактирования.</li></ul><p>Shift+Tab — покажет документацию для объекта, который вы только что ввели в ячейку кода. Для переключения между несколькими режимами продолжайте нажимать это сочетание клавиш.<br />Esc+F — поможет найти и заменить информацию в коде (кроме выходных данных).<br />Esc+0 — переключает вывод ячейки.<br />Shift+J (или Shift+Down) — выделяет ячейки ниже текущей. Shift+K (или Shift+Up) выделяет ячейки выше текущей. Как только ячейки выбраны, их можно удалить/скопировать/вырезать/вставить/запустить как пакет. Это удобно, когда нужно переместить только часть документа.<br />Shift+M — позволяет объединить несколько ячеек.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_Sh9vC6wALS_-bV3pBvt5oA.gif" alt="" /></figure><p>Кроме того, в документе можно запускать bash-команды, если в начале поставить восклицательный знак:</p><p>!pip install numpy</p><p>Чтобы отключить отображение результата выражения в последней строчке ячейки, добавьте в конце последней строчки точку с запятой (;).</p><h3>Комментирование/раскомментирование блока кода</h3><p>Добавить новые строки кода и закомментировать старые можно сочетанием клавиш. Выделите все нужные строки и нажмите Cmd + /, это закомментирует выделенный код.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_0Ei0ZyZE3dY_S6_ohRVySw.gif" alt="" /></figure><h3>LaTex</h3><p>Вы можете писать на LaTex в Markdown-ячейках, и они будет отображены в виде формулы.</p><p>Данная строка будет преобразована в следующую формулу:</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_0ySHhyRuNaEZ0Nl21oMQfA.jpg" alt="" /></figure><h3>Отображение данных из всех ячеек</h3><p>По умолчанию отображается только последний вывод в ячейке. Для всего остального необходимо вручную добавить print(). Такой вариант хорош, но не очень удобен. Можно изменить это, добавив вверху документа следующее:</p><p>Отображение по умолчанию:</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_xQ7mMDSFBLKNw2LqiSC-Ow.png" alt="" /></figure><p>Отображение всех ячеек:</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_l-GBKUnV1sr8PYNRBfarQQ-1.jpg" alt="" /></figure><p>Чтобы вернуться к настройкам по умолчанию, выполните следующее:</p><p>Изменение настроек следует запускать в отдельной ячейке, чтобы оно вступило в силу при следующем запуске ячейки.</p><h2>Расширения</h2><p>Поскольку Jupyter Notebook имеет открытый исходный код, для него было разработано множество расширений. Вы можете поработать с <a href="https://github.com/ipython/ipython/wiki/Extensions-Index">официальным списком расширений IPython</a> или посмотреть <a href="https://github.com/ipython-contrib/jupyter_contrib_nbextensions">другие популярные расширения</a>.</p><p>Вы можете установить Nbextensions в любое время из командной строки.</p><p>С помощью pip:</p><p>Или с помощью Anaconda:</p><p>Как только они будут установлены, вы увидите вкладку Nbextensions.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_XXuekdaI1RfC44rH6TKBxA.jpg" alt="" /></figure><p>В <a href="https://github.com/ipython-contrib/jupyter_contrib_nbextensions">этом репозитории</a> можно узнать больше о расширениях, об их включении в ваш документ и исключении из него.</p><p>Для работы просто нажмите «Nbextensions» в верхней части экрана, выберите интересующее вас расширение, а затем прокрутите вниз, чтобы найти нужную информацию.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_TbQ3s-a6sFD4MYBkmcaMyw-1.gif" alt="" /></figure><h3>Популярные расширения</h3><ul><li>Scratchpad  —  позволяет создать временную ячейку для выполнения быстрых вычислений без создания новой ячейки в workbook.</li><li>Hinterland  —  делает доступным меню автозаполнения кода для каждого нажатия клавиши в ячейке кода, а не только для клавиши Tab.</li><li>Snippets  —  добавляет раскрывающееся меню для вставки фрагментов в текущий документ.</li><li>Autopep8  —  автоматически форматирует код на Python в соответствии со стилевым руководством PEP 8. Убедитесь, что на локальной машине выполнена команда $ pip install autopep8 --user. Это гарантирует, что вы будете следовать правильным соглашениям о написании кода в Python.</li><li>Split Cells Notebook  —  позволяет разделять ячейки. Войдите в командный режим и используйте Shift+S, чтобы переключить текущую ячейку между разделённой и полной шириной.</li><li>Table of Contents  —  позволяет собирать все запущенные заголовки и отображать их в плавающем окне, в виде боковой панели или с помощью меню навигации.</li><li>A Code Prettifier  — очищает, форматирует и выравнивает ваш код за вас.</li><li>Notify  —  отображает уведомление на рабочем столе, когда ядро бездействует. Это удобно, когда вы запускаете код, выполнение которого занимает больше пары секунд.</li><li>Code Folding  —  в режиме редактирования сбоку появляется треугольник, который позволяет скрывать блоки кода. Удобно, когда есть большие функции, которые вы хотите скрыть.</li><li>Zen mode  —  делает детали менее загроможденными. Убедитесь, что фоны в настройках отключены.</li></ul><h2>Магия</h2><p>Магия — это удобные команды, которые облегчают жизнь, когда вы хотите выполнить определённые задачи. Они часто выглядят как команды Unix, но все они реализованы на Python.</p><p>Есть два вида магии: строчная магия (применяется к одной строке) и магия ячейки (применяется ко всей ячейке). Строчная магия начинается с символа процента (%), а магия ячейки — с двух таких символов (%%).</p><p>Чтобы увидеть доступную магию, нужно запустить следующее:</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_sNrAqQDqZ5QF_pu4dWP6qw.jpg" alt="" /></figure><h3>Настройка среды разработки</h3><p>Можно легко управлять переменными среды вашего документа с помощью %env без перезагрузок. Выполните эту команду без каких-либо переменных, она отобразит все ваши переменные среды.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_1yKM4lcD9oDVTKO7z_QLbQ.jpg" alt="" /></figure><h3>Вставка кода</h3><p>С помощью %load можно вставить код из внешнего скрипта.</p><p>Данная команда возьмёт файл basic_imports.py и загрузит его в ваш документ.</p><h3>Экспорт содержимого ячейки</h3><p>Это очень удобная функция. Она позволяет в любое время экспортировать содержимое ячейки с помощью %%writefile.</p><p>Это очень полезно, если вы используете один и тот же импорт в каждом документе или постоянно добавляете одну и ту же функцию. Теперь вы можете написать код один раз и использовать его везде.</p><p>Например, вы можете написать файл basic_imports.py, содержащий следующий код:</p><p>Это создаст файл .py, содержащий ваши основные импорты.</p><p>Дальше можно его загрузить в любое время, написав:</p><p>Выполнение этой команды заменяет содержимое ячейки загруженным файлом.</p><p>Теперь вы можете снова запустить ячейку, чтобы импортировать все ваши модули.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_UGOd8umdSvG_IKnWUmz6pw.gif" alt="" /></figure><h3>Сохранение и повторное использование кода</h3><p>Как и у большинства людей, у вас периодически могут быть одни и те же задания. Возможно, есть несколько уравнений, которые вы постоянно решаете, или несколько строк кода, которые вы создавали много раз. Jupyter позволяет сохранять фрагменты кода как исполняемые макросы. Поскольку макросы — это просто код, он может содержать переменные, которые должны быть определены перед выполнением.</p><p>Теперь, чтобы определить макрос, нужен код для использования. Можно сохранить практически всё, от строки до функции.</p><p>Для настройки макроса используется магия %macro и %load. Обычно принято имена макросов начинать с двойного подчеркивания, чтобы отличать их от других переменных.</p><p>Магия %macro принимает имя и номер ячейки (или несколько номеров), а специальный ключ -q делает магию менее подробной. %store позволяет сохранить любую переменную для использования в других сессиях. В коде выше передаётся имя созданного макроса, чтобы можно было использовать его снова после выключения ядра или в других документах.</p><p>Чтобы загрузить макрос, достаточно выполнить следующее.</p><p>Чтобы выполнить макрос, можно просто запустить ячейку, которая содержит имя макроса.</p><p>Для наглядного примера измените переменную, использованную в макросе.</p><p>При запуске макроса захватывается измененное значение.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_MJJgcKPRMY1AfmufBaI6SA.jpg" alt="" /></figure><p>Это работает, потому что макросы выполняют сохраненный код в пространстве имён ячейки. Если name будет не определено, вы получите ошибку.</p><p>Если вы хотите использовать один и тот же макрос во всех своих документах, в этом может помочь %store.</p><p>%store позволяет хранить макрос и использовать его во всех Jupyter Notebook.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_RtZu_hZXlQodN6cDHicI_A.jpg" alt="" /></figure><figure><img src="https://media.tproger.ru/uploads/2019/07/1_REGJy6-0II8C2zi6__DBfQ.jpg" alt="" /></figure><h3>Магия run</h3><p>%run выполнит ваш код и отобразит любые выводные данные, включая графики Matplotlib. Таким образом можно выполнять даже целые документы. Также %run может выполнить код Python из файлов .py.</p><h3>Магия pycat</h3><p>Использование %pycat покажет содержимое скрипта, если вы не уверены, что в нём находится.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_ydYbo5jwjSqToExo8Fi2Wg.jpg" alt="" /></figure><h3>Автосохранение</h3><p>%autosave определяет, как часто ваш документ будет автоматически сохранять контрольные точки в файл.</p><p>После данной команды автосохранение будет происходить каждые 60 секунд.</p><h3>Отображение графиков</h3><p>Эта команда отобразит графики Matplotlib прямо в выводе ячейки. Это означает, что диаграммы и графики Matplotlib можно включать прямо в свои документы. Имеет смысл запустить команду в начале вашего документа, прямо в первой ячейке.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_0p2k6k6O8Z8-OJaLYu48iw.jpg" alt="" /></figure><h3>Измерение времени</h3><p>Для измерения времени используются две магические команды IPython: %%time и %timeit. Они очень полезны, когда ваш код медленно выполняется и вы пытаетесь определить, в чём проблема. Они обе имеют как строковый режим, так и режим запуска из ячейки.</p><p>Основное различие между %timeit и %time состоит в том, что первая выполняет указанный код много раз и вычисляет среднее значение.</p><p>%%time даст вам информацию о единичном запуске кода в вашей ячейке.</p><p>%%timeit использует <a href="https://docs.python.org/3.5/library/timeit.html">Python-модуль timeit</a>, который выполняет выражение множество раз, а затем выдаёт среднее значение результатов. Вы можете указать количество запусков с помощью опции -n, количество повторов с помощью -r и т. д.</p><h3>Запуск кода из другого ядра</h3><p>Можно запустить выполнение ячейки с использованием указанного языка. Существуют расширения для нескольких языков. Есть опции вроде:</p><ul><li>%%HTML,</li><li>%%python,</li><li>%%python2,</li><li>%%python3,</li><li>%%ruby,</li><li>%%perl,</li><li>%%capture,</li><li>%%javascript,</li><li>%%js,</li><li>%%latex,</li><li>%%markdown,</li><li>%%pypy.</li></ul><p>Например, для рендеринга HTML в вашем документе вы должны выполнить следующее:</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_NJeDSsq-GNmAKMv3y2-xCg-1.jpg" alt="" /></figure><p>Вы также можете использовать LaTeX напрямую когда угодно:</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_aK0AdwzDYx1GvdavMbsnzw.jpg" alt="" /></figure><h3>Магия who</h3><p>Команда %who без аргументов выводит список всех переменных, существующих в глобальной области видимости. При передаче параметра, например str, будут перечислены только переменные этого типа:</p><p>Если набрать данную команду, результат будет следующим.</p><figure><img src="https://media.tproger.ru/uploads/2019/07/1_OfB4fqZGWb4wkKPTRawV8w.jpg" alt="" /></figure><h3>Магия prun</h3><p>%prun показывает, сколько времени ваша программа потратила на каждую функцию. Использование %prun statement_name даёт упорядоченную таблицу, показывающую, сколько раз каждая внутренняя функция была вызвана в блоке. А также время, которое потребовалось на каждый вызов, и суммарное время всех запусков функции.</p><h3>Магия отладчика в Python</h3><p>Jupyter имеет собственный интерфейс для <a href="https://docs.python.org/3.5/library/pdb.html">отладчика Python</a>. Это позволяет заглянуть внутрь функции и посмотреть, что там происходит. Включить эту магию можно, запустив %pdb в начале ячейки.</p><h3>Графики высокого разрешения</h3><p>Одна простая магическая строка IPython может предоставит вам на выводе график с двойным разрешением для экранов Retina. Стоит отметить, что на других экранах график может не отображаться.</p><h3>Пропуск ячейки для выполнения</h3><p>Просто добавьте %%script false в начале ячейки:</p><h2>Оповещения</h2><p>Оповещения могут пригодиться, когда вы запускаете код, требующий долгого выполнения. Вы можете настроить уведомление, которое будет отправлено, когда код выполнится.</p><h3>На Linux и Mac</h3><h3>На Windows</h3><p>Чтобы использовать такое оповещение, у вас должен быть установлен sox. Установить его можно с помощью следующей строки:</p><p>Но это сработает, только если вы пользуетесь Homebrew.</p><h2>Выводы</h2><p>Изложенного в этой статье должно быть достаточно для успешного начала работы в Jupyter Notebook. Если вы знаете какие-либо советы и рекомендации, которые могут помочь другим новичкам, напишите об этом в комментариях ниже.</p><p>Если вы хотите подняться на уровень повыше, вас может заинтересовать <a href="https://towardsdatascience.com/speed-up-jupyter-notebooks-20716cbe2025">другая статья</a> по оптимизации Jupyter Notebook.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как настроить Jupyter Notebook для Python 3</title>
      <link>https://tproger.ru/translations/jupyter-notebook-python-3</link>
      <comments>https://tproger.ru/translations/jupyter-notebook-python-3?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Ярослав Сарницкий]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/jupyter-notebook-python-3</guid>
      <description><![CDATA[<p>Jupyter Notebook запускает интерактивный код Python 3 локально или на сервере Ubuntu 16.04; установка выполняется через pip и виртуальное окружение.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/jupyter-notebook-python-3">Как настроить Jupyter Notebook для Python 3</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Jupyter Notebook]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 17 Aug 2017 17:29:36 GMT</pubDate>
      <content:encoded><![CDATA[<p>Jupyter Notebook — это командная оболочка для интерактивных вычислений. Этот инструмент может использоваться не только с Python, но и другими языками программирования: Julia, R, Haskell и Ruby. Он часто используется для работы с данными, статистическим моделированием и машинным обучением.</p><p>В статье мы рассмотрим, как настроить Jupyter Notebook для локального запуска или запуска на сервере под управлением Ubuntu 16.04. Этот инструмент поможет создавать файлы (notebooks), которые содержат не только компьютерный код, но и другие элементы (заметки, уравнения, диаграммы, ссылки и т.д.), которыми можно потом поделиться с заказчиками или друзьями.</p><p>После прочтения этой статьи вы будете знать, как запускать код Python 3 при помощи Jupyter Notebook локально или на удалённом сервере.</p><h2>Требования</h2><p>Нам понадобится среда программирования для Python 3, установленная либо на локальной машине, либо на сервере Ubuntu 16.04.</p><h2>Шаг 1. Установка Jupyter Notebook</h2><p>Jupyter Notebook можно установить при помощи пакетного менеджера pip.</p><p>В статье будет использоваться виртуальное окружение с именем my_env. Для установки пакета для работы с виртуальным окружением введите следующую команду в терминале:</p><p>Теперь мы готовы создать виртуальное окружение. Выбираем каталог, в который все будет установлено, или создаем новый каталог с mkdir:</p><p>Как только вы переместитесь в нужную вам директорию, введите следующую команду в терминал:</p><p>По сути, pyvenv создает новый каталог, содержащий несколько элементов, которые мы можем просмотреть с помощью команды ls:</p><p>Для активации виртуального окружения вам осталось ввести последнюю команду:</p><p>Затем нужно убедиться, что pip был обновлен до последней версии:</p><p>Теперь можно установить Jupyter Notebook следующей командой:</p><p>После этой строчки кода Jupyter Notebook будет установлен в активное виртуальное окружение.</p><p>Следующий шаг предназначен для тех, кто хочет подключиться к веб-интерфейсу, используя SSH-туннелирование.</p><h2>Шаг 2 (необязательный). Запуск Jupiter Notebook на сервере</h2><p>Для тех, кто установил Jupyter Notebook на удаленный сервер, нужно подключаться к веб-интерфейсу через SSH-туннель. Приложение использует порт 8888 (или же 8889), а SSH-туннель поможет обезопасить соединение с сервером.</p><h3>SSH-туннелирование с помощью Mac или Linux</h3><p>Для тех, кто работает с macOS или Linux, нужно выполнить следующую команду в окне терминала:</p><p>Команда ssh создаст SSH-подключение, а флаг –L перенаправит порт локального или клиентского хоста на хост и порт уделенного сервера. То есть все, что работает на порте 8888 с серверной стороны, будет работать на порте 8888 вашей локальной машины.</p><p>При необходимости можно изменить порт 8888 на один из ваших вариантов, чтобы избежать использования порта, который уже используется другим процессом:</p><ul><li>server_username — имя пользователя на сервере (например, sammy);</li><li>your_server_ip — это IP-адрес сервера.</li></ul><p>Например, для имени пользователя sammy и адреса сервера 203.0.113.0 команда будет следующей:</p><p>Если после запуска команды ssh -L не появляется ошибка, можно переходить в среду программирования и запустить Jupyter Notebook:</p><p>После этого, вы получите результат содержащий URL-адрес. Введите его в окне браузера и перейдите к веб-интерфейсу Jupyter Notebook (http://localhost:8888).</p><h3>SSH-туннелирование с помощью Windows и Putty</h3><p>Пользователи Windows могут создать туннель SSH, используя программу <a href="http://www.putty.org">Putty</a>.</p><p>Сначала нужно ввести URL-адрес сервера или IP-адрес имени хоста, как показано ниже на скриншоте:</p><figure><img src="https://media.tproger.ru/uploads/2017/08/1-3.png" alt="" /></figure><p>Далее нажимаем SSH внизу левой панели, для раскрытия полного меню и нажимаем на слово Tunnels (туннели). Вводим номер локального порта, который будет использоваться для доступа к Jupyter на локальном компьютере. Выбираем порт 8000 или выше, чтобы избежать совпадения портов, используемых другими службами, и указываем назначение как localhost: 8888, где: 8888 — это номер порта, через который работает Jupyter Notebook.</p><p>Теперь нажмите кнопку Add (добавить), и порты должны появиться в списке Forwarded ports (Переадресованные порты):</p><figure><img src="https://media.tproger.ru/uploads/2017/08/2-3.png" alt="" /></figure><p>И после этого переходим по адресу http://localhost:8000 (или любым другим портом, который вы выбрали) в веб-браузере, чтобы подключиться к Jupyter Notebook, работающему на сервере.</p><h2>Шаг 3. Запуск Jupyter Notebook локально</h2><p>После окончания установки Jupyter Notebook можно запустить при помощи следующей команды в терминале:</p><p>В терминале выведутся логи Jupyter Notebook. При запуске инструмент использует определенный порт. Обычно это 8888. Для проверки порта, с которым работает Jupyter Notebook, используйте команду, при помощи которой запускался Jupyter Notebook:</p><p>Если вы используете Jupyter Notebook на локальном компьютере, а не на сервере, то при открытии веб-приложения Jupyter Notebook должен открыться ваш браузер по умолчанию. Если этого не произошло, можно открыть браузер вручную и перейти к http://localhost: 8888 для подключения.</p><p>Если нужно остановить процессы Jupyter Notebook, то нажмите CTRL + C, а потом Y при появлении запроса на закрытие и ENTER для подтверждения.</p><p>Вы получите следующий результат:</p><p>Jupyter Notebook остановлен.</p><h2>Шаг 4. Использование Jupyter Notebook</h2><p>Пришло время начать использование Jupyter Notebook.</p><p>Теперь можно подключиться к нему с помощью веб-браузера. Jupyter Notebook — очень мощный инструмент и имеет множество функций. В этом разделе описываются некоторые основные функции, позволяющие начать работу с ним. Jupyter Notebook покажет все файлы и папки в каталоге, из которого он запущен, поэтому, когда начинается работа над проектом, обязательно нужно запускать его из каталога проекта.</p><p>Чтобы создать документ выбираем New → Python 3 в верхнем выпадающем меню:</p><figure><img src="https://media.tproger.ru/uploads/2017/08/3-2-1024x256.png" alt="" /></figure><p>После открытия документа можно запускать код Python в ячейке или использовать язык разметки Markdown. Чтобы изменить первую ячейку для работы с Markdown, нужно нажать в верхней панели навигации Cell → Cell Type → Markdown. Теперь можно создавать заметки с использованием Markdown и даже включать уравнения, написанные в LaTeX, помещая их между символами $$. Например, попробуем ввести следующую команду в ячейку после включения Markdown:</p><p>Чтобы переформатировать Markdown в форматированный текст, нажимаем CTRL + ENTER и получаем следующие результаты:</p><figure><img src="https://media.tproger.ru/uploads/2017/08/4-1.png" alt="" /></figure><p>Также можно использовать ячейки Markdown для написания кода. Для теста напишем небольшое уравнение и выведем результат. Нажимаем на верхнюю ячейку, нажимаем ALT+ENTER для создания ячейки под ней и вводим следующий код в новую ячейку:</p><p>Чтобы запустить код, нажимаем CTRL + ENTER и получаем следующие результаты:</p><figure><img src="https://media.tproger.ru/uploads/2017/08/5-1-1024x624.png" alt="" /></figure><p>Теперь у вас есть возможность импортировать модули и использовать Jupyter Notebook так же, как и в любой другой среде разработки Python!</p><h2>Вывод</h2><p>Поздравляем! Теперь вы можете написать воспроизводимый код Python и заметки в Markdown с помощью Jupyter Notebook. Для получения справки по использованию Jupyter Notebook нажмите Help → User Interface Tour в главном меню навигации.</p>]]></content:encoded>
    </item>
  </channel>
</rss>