Экосистема библиотек Python: от установки до практики

Этот курс научит вас эффективно использовать готовые решения в Python. Вы узнаете, как управлять пакетами, освоите инструменты стандартной библиотеки и познакомитесь с популярными фреймворками для анализа данных и веб-разработки.

1. Введение в модули и пакеты: менеджер pip и виртуальные окружения

Введение в модули и пакеты: менеджер pip и виртуальные окружения

Добро пожаловать в курс «Экосистема библиотек Python: от установки до практики». Мы начинаем наше путешествие с фундаментальных основ, без которых профессиональная разработка на Python невозможна. Прежде чем мы начнем изучать конкретные библиотеки для анализа данных, веб-разработки или автоматизации, нам нужно научиться грамотно ими управлять.

Представьте, что вы строите дом. Python сам по себе — это набор отличных инструментов: молоток, пила, отвертка (встроенные функции и типы данных). Но чтобы построить сложный дом, вам нужны готовые кирпичи, окна, двери и система отопления. Вам не нужно изобретать их с нуля — вы заказываете их у поставщиков. В мире Python такими «готовыми компонентами» являются библиотеки, а «службой доставки» и «складом» служат инструменты, о которых мы поговорим в этой статье.

Анатомия кода: Модули и Пакеты

В Python существует иерархия организации кода, которая позволяет структурировать проекты любого масштаба. Давайте разберемся с терминологией, чтобы говорить на одном языке.

Что такое модуль?

Модуль — это просто файл с расширением .py, содержащий код на Python. Это может быть набор функций, классов или переменных. Когда вы пишете import math, вы подключаете модуль math, который является частью стандартной библиотеки Python.

Пример простейшего модуля my_module.py:

Чтобы использовать его в другом файле, мы пишем:

Что такое пакет?

Пакет (package) — это каталог (папка), который содержит модули и специальный файл __init__.py. Этот файл (часто пустой) сигнализирует интерпретатору Python, что данная папка является пакетом и ее можно импортировать.

Пакеты позволяют группировать модули по смыслу. Например, библиотека для работы с сетью может быть пакетом, внутри которого есть модули для работы с HTTP, FTP и электронной почтой.

!Структурное различие между модулем и пакетом в Python

Что такое библиотека?

Термин библиотека (library) является более общим и часто используется как синоним пакета. Обычно под библиотекой понимают совокупность пакетов и модулей, решающих определенную задачу (например, requests для HTTP-запросов или pandas для анализа данных).

PyPI и менеджер пакетов pip

Где хранятся все эти библиотеки? Существует центральный репозиторий, который называется PyPI (Python Package Index). Это огромный онлайн-каталог, куда разработчики со всего мира загружают свои библиотеки с открытым исходным кодом.

Чтобы скачать что-то из этого каталога, нам нужен специальный инструмент. Здесь на сцену выходит pip.

pip (Package Installer for Python) — это стандартный менеджер пакетов для Python. Он позволяет устанавливать и управлять библиотеками, которые не входят в стандартную поставку Python.

Основные команды pip

Работа с pip происходит в командной строке (терминале). Вот самые важные команды, которые вы будете использовать ежедневно:

  • Установка пакета:
  • Эта команда скачивает последнюю версию библиотеки requests из PyPI и устанавливает её на ваш компьютер.

  • Установка конкретной версии:
  • Иногда вам нужна старая версия библиотеки для совместимости. Знак == позволяет зафиксировать версию.

  • Обновление пакета:
  • Удаление пакета:
  • Просмотр установленных пакетов:
  • Выведет список всех библиотек и их версий, установленных в текущем окружении.

    Проблема зависимостей и «Dependency Hell»

    Представьте ситуацию: вы работаете над двумя проектами.

    * Проект А (старый веб-сайт) написан год назад и использует библиотеку Django версии 2.2. * Проект Б (новый стартап) вы пишете сейчас и хотите использовать новейший Django версии 4.0.

    Если вы просто установите Django через pip install django в вашу основную систему, у вас возникнет конфликт. Python по умолчанию устанавливает библиотеки в одну общую папку. Вы не можете иметь две разные версии одной и той же библиотеки в одном глобальном пространстве.

    Если вы обновите Django до 4.0 ради Проекта Б, Проект А перестанет работать. Это классическая проблема, известная как «Ад зависимостей».

    !Иллюстрация проблемы конфликта версий и её решения через изоляцию

    Виртуальные окружения: venv

    Решением проблемы является использование виртуальных окружений.

    Виртуальное окружение — это изолированная директория, которая содержит свою собственную установку Python и свой собственный набор библиотек. Когда вы работаете в виртуальном окружении, любые библиотеки, которые вы устанавливаете, попадают только в эту папку и не влияют на другие проекты или глобальную систему.

    Создание и использование venv

    Начиная с версии Python 3.3, модуль venv встроен в язык, поэтому ничего дополнительно устанавливать не нужно.

    #### 1. Создание окружения

    Перейдите в папку вашего проекта через терминал и выполните:

    * Windows: * macOS / Linux:

    Эта команда создаст папку с именем venv (второе слово в команде — это имя папки, вы можете назвать её как угодно, например .venv или env, но venv — это стандарт).

    #### 2. Активация окружения

    После создания окружение нужно активировать. Это скажет вашему терминалу использовать Python и pip именно из этой папки.

    * Windows: * macOS / Linux:

    После активации в начале строки вашего терминала появится надпись (venv). Это верный знак того, что вы находитесь в изолированном пространстве.

    #### 3. Работа внутри окружения

    Теперь, когда вы видите (venv), любые команды pip install будут устанавливать пакеты только в папку venv/lib.

    Попробуйте установить что-нибудь:

    Если вы проверите pip list, вы увидите только requests и базовые пакеты, даже если в вашей основной системе установлены сотни других библиотек.

    #### 4. Деактивация

    Чтобы выйти из виртуального окружения и вернуться в глобальную систему, просто введите:

    Фиксация зависимостей: requirements.txt

    Когда вы работаете в команде или переносите проект на сервер, вам нужно гарантировать, что везде установлены одни и те же версии библиотек.

    Для этого используется файл requirements.txt. Это простой текстовый список всех библиотек проекта.

    Создание списка (Freeze)

    Находясь в активированном виртуальном окружении, выполните:

    Символ > перенаправляет вывод команды pip freeze (которая показывает список установленных пакетов в специальном формате) в файл. Содержимое файла будет выглядеть примерно так:

    Установка из списка

    Теперь, если другой разработчик скачает ваш проект, ему не нужно гадать, какие библиотеки устанавливать. Он просто создаст свое виртуальное окружение и выполнит одну команду:

    Флаг -r говорит pip прочитать файл и установить всё, что в нем перечислено.

    Лучшие практики (Best Practices)

    Подводя итог, вот алгоритм, которому следует каждый профессиональный Python-разработчик при начале нового проекта:

  • Создать папку проекта.
  • Создать виртуальное окружение: python -m venv venv.
  • Добавить папку venv в .gitignore (если вы используете Git), так как виртуальное окружение весит много и его не нужно хранить в репозитории — его легко воссоздать.
  • Активировать окружение.
  • Установить необходимые библиотеки через pip.
  • Зафиксировать зависимости: pip freeze > requirements.txt.
  • > «Виртуальные окружения — это не просто удобство, это гигиена разработки. Работа без них подобна использованию одной зубной щетки на всё общежитие.»

    В следующей статье мы перейдем к практике и разберем, как устроена структура популярных библиотек изнутри, и научимся читать документацию как профессионалы.

    Полезные ссылки

    * Официальная документация по установке пакетов * Документация модуля venv * Каталог пакетов PyPI

    2. Стандартная библиотека Python: работа с файлами, временем и системными процессами

    Стандартная библиотека Python: работа с файлами, временем и системными процессами

    В предыдущей статье мы разобрались, как устанавливать сторонние пакеты с помощью pip и изолировать их в виртуальных окружениях. Это важный навык, но сила Python не только в том, что можно скачать, но и в том, что уже встроено.

    Философия Python часто описывается фразой «Batteries Included» («Батарейки в комплекте»). Это означает, что вместе с интерпретатором вы получаете огромный набор инструментов — Стандартную библиотеку. Она позволяет решать задачи от работы с файловой системой до создания веб-серверов без установки чего-либо извне.

    В этой статье мы изучим модули, которые понадобятся вам в 99% проектов: pathlib, os, datetime, sys и json.

    Файловая система: от os.path к pathlib

    Работа с файлами и папками — самая частая задача скриптов автоматизации. Раньше для этого использовался модуль os и его подмодуль os.path. Однако, начиная с Python 3.4, стандартом де-факто стал модуль pathlib.

    Почему pathlib лучше?

    Представьте, что вам нужно собрать путь к файлу. В Windows пути разделяются обратным слэшем (\), а в Linux и macOS — прямым (/). Если вы просто напишете строку "folder/file.txt", ваш код может сломаться на другой операционной системе.

    pathlib решает эту проблему, превращая пути в объекты, а не просто строки. Это позволяет работать с путями интуитивно и безопасно.

    !Объектно-ориентированный подход к путям исключает ошибки синтаксиса ОС

    Основные операции с pathlib

    Для начала работы нам нужно импортировать класс Path:

    Самые полезные методы и свойства:

  • Проверка существования:
  • Получение имени и расширения:
  • Создание директорий:
  • Чтение и запись текста (для небольших файлов):
  • > Совет: Старайтесь использовать pathlib вместо os.path в новых проектах. Это делает код чище и переносимее.

    Управление временем: datetime и time

    В программировании время — сложная материя. Есть часовые пояса, високосные годы и разница между «машинным» временем и «человеческим».

    Модуль datetime

    Этот модуль используется для работы с датами и временем в привычном нам формате (год, месяц, день, час).

    #### Арифметика дат

    Часто нужно узнать, какое число будет через неделю или сколько дней прошло с события. Для этого используется класс timedelta.

    Модуль time

    Если datetime — это календарь на стене, то time — это секундомер. Он чаще используется для измерения производительности или пауз.

    Взаимодействие с системой: sys и os

    Эти модули связывают ваш скрипт с внешним миром операционной системы и интерпретатора.

    Модуль sys

    sys предоставляет доступ к переменным и функциям, которые взаимодействуют с интерпретатором Python.

    Самый частый сценарий использования — чтение аргументов командной строки.

    Допустим, у вас есть скрипт script.py:

    Если вы запустите его командой: python script.py hello 123

    Вывод будет списком: ['script.py', 'hello', '123']

    * sys.argv[0] — всегда имя самого скрипта. * sys.argv[1:] — аргументы, переданные пользователем.

    Также sys используется для принудительного завершения программы:

    Модуль os

    Хотя pathlib заменил часть функций os, этот модуль всё еще незаменим для работы с переменными окружения (environment variables). Это критически важно для безопасности — например, чтобы не хранить пароли прямо в коде.

    Запуск внешних процессов: subprocess

    Иногда Python выступает как «клей», который соединяет другие программы. Если вам нужно запустить команду терминала (например, git status или ping) из Python, используйте модуль subprocess.

    Раньше для этого использовали os.system, но сейчас стандартом является subprocess.run.

    > Важно: Будьте осторожны при передаче пользовательского ввода в subprocess, чтобы избежать уязвимостей (Command Injection).

    Работа с данными: модуль json

    Хотя это не совсем «системный» модуль, работа с файлами неразрывно связана с форматами данных. JSON (JavaScript Object Notation) — самый популярный формат обмена данными.

    В Python работа с ним элементарна благодаря встроенному модулю json.

    Сериализация (Python -> JSON)

    Превращение объектов Python (словарей, списков) в строку JSON.

    Десериализация (JSON -> Python)

    Обратный процесс: превращение JSON-строки в словарь Python.

    Заключение

    Стандартная библиотека Python — это ваш швейцарский нож. Прежде чем искать стороннее решение на PyPI, загляните в документацию Python — скорее всего, нужный инструмент уже у вас под рукой.

    Мы научились:

  • Управлять путями кроссплатформенно с pathlib.
  • Манипулировать датами с datetime.
  • Взаимодействовать с аргументами запуска через sys.
  • Запускать внешние программы через subprocess.
  • Сохранять и читать данные с json.
  • В следующей статье мы перейдем к более продвинутым темам и начнем изучать работу с сетью и HTTP-запросами.

    Полезные ссылки

    * Документация модуля pathlib * Документация модуля datetime * Документация модуля subprocess

    3. Библиотеки для анализа данных и научных вычислений: основы NumPy и Pandas

    Библиотеки для анализа данных и научных вычислений: основы NumPy и Pandas

    В предыдущих статьях мы научились создавать виртуальные окружения и работать со стандартной библиотекой Python. Вы уже умеете читать файлы, обрабатывать JSON и взаимодействовать с операционной системой. Однако, когда речь заходит о серьезной обработке данных — будь то финансовая аналитика, научные эксперименты или машинное обучение — стандартных средств Python становится недостаточно.

    Встроенные списки Python (list) универсальны, но медлительны при работе с миллионами чисел. Для решения задач высокой производительности и удобной работы с табличными данными в экосистеме Python существуют два гиганта: NumPy и Pandas. Сегодня мы разберем, почему они стали стандартом индустрии и как начать с ними работать.

    NumPy: Фундамент научных вычислений

    NumPy (Numerical Python) — это библиотека, лежащая в основе практически всех инструментов для анализа данных в Python. Даже если вы используете другие библиотеки, скорее всего, «под капотом» они используют NumPy.

    Проблема стандартных списков

    Почему нам не хватает обычных списков? Дело в том, как Python хранит данные в памяти. Список в Python — это массив ссылок на объекты. Каждый объект (даже простое целое число) занимает много места и разбросан по памяти. Чтобы сложить два списка поэлементно, интерпретатору нужно пройтись циклом, проверить тип каждого элемента и выполнить сложение.

    NumPy решает эту проблему, вводя новый тип данных: ndarray (n-dimensional array — n-мерный массив).

    !Визуализация различий в хранении данных: список хранит ссылки, массив NumPy хранит сами значения плотно друг к другу

    Установка и импорт

    По традиции, NumPy импортируют с сокращением np:

    Создание массивов и векторизация

    Главная магия NumPy — это векторизация. Это способность выполнять операции над всем массивом сразу, без написания циклов for. Это не только делает код короче, но и ускоряет его выполнение в десятки и сотни раз, так как операции выполняются на низком уровне (на языке C).

    Многомерные массивы и типы данных

    В отличие от списков, массивы NumPy имеют строгий тип данных (все элементы должны быть одного типа, например, только int или только float) и фиксированную размерность.

    Базовая статистика

    NumPy идеально подходит для математических расчетов. Допустим, нам нужно найти среднее арифметическое значение элементов массива. Математически это записывается так:

    Где — среднее значение, — количество элементов, — знак суммирования, а — каждый отдельный элемент массива.

    В коде это делается одной командой:

    Pandas: Excel на стероидах

    Если NumPy — это мощный калькулятор для матриц, то Pandas — это программируемый Excel. Эта библиотека построена поверх NumPy и добавляет метки к данным, позволяя работать с таблицами, где у строк и столбцов есть имена.

    Основные структуры данных

    В Pandas есть два главных объекта:

  • Series (Серия) — одномерный массив с метками (похож на один столбец в Excel).
  • DataFrame (Датафрейм) — двумерная таблица (похожа на лист Excel целиком).
  • !Анатомия DataFrame: индексы строк, названия колонок и данные

    Установка и импорт

    Стандартное сокращение для Pandas — pd.

    Создание DataFrame

    Чаще всего данные загружаются из файлов, но полезно уметь создавать таблицы вручную из словарей.

    Вывод будет выглядеть как аккуратная таблица:

    Обратите внимание на цифры 0, 1, 2 слева. Это индекс (Index) — уникальный идентификатор строки. По умолчанию Pandas просто нумерует строки, но индексом может быть что угодно, например, дата или ID клиента.

    Чтение и анализ данных

    Pandas умеет читать практически любые форматы: CSV, Excel, JSON, SQL, HTML.

    Выбор и фильтрация данных

    Это то, ради чего используют Pandas. Забудьте о сложных циклах с условиями if.

    #### 1. Выбор столбца

    #### 2. Фильтрация (Boolean Indexing)

    Допустим, мы хотим найти всех людей старше 23 лет. В Pandas это делается интуитивно:

    В одну строку это выглядит так:

    #### 3. Доступ по меткам и индексам: loc и iloc

    * .loc используется для доступа по имени (названию метки). * .iloc используется для доступа по порядковому номеру (позиции).

    Практический пример: Анализ продаж

    Давайте объединим знания. Представьте, что у нас есть данные о продажах в магазине.

    Результат:

    Всего за пару строк кода мы создали мини-отчет, который в чистом Python потребовал бы создания словарей, циклов и ручного суммирования.

    Заключение

    NumPy и Pandas — это инструменты, которые превращают Python из простого языка сценариев в мощную аналитическую платформу.

    * Используйте NumPy, когда вам нужны быстрые математические операции над массивами чисел. * Используйте Pandas, когда вы работаете с табличными данными, файлами CSV/Excel и вам нужно фильтровать, группировать или очищать данные.

    В следующей статье мы научимся визуализировать наши данные, превращая сухие цифры в понятные графики с помощью библиотеки Matplotlib.

    Полезные ссылки

    * Официальная документация NumPy * Официальная документация Pandas * Шпаргалка по Pandas

    4. Веб-технологии и работа с сетью: библиотека Requests и введение в Flask

    Веб-технологии и работа с сетью: библиотека Requests и введение в Flask

    Мы прошли долгий путь: научились настраивать окружение, работать с файловой системой и анализировать данные с помощью Pandas. Но до сих пор наши программы жили в изоляции — на вашем локальном компьютере. В современном мире программы редко работают в одиночку. Они общаются: запрашивают курсы валют, скачивают погоду, отправляют уведомления в мессенджеры или управляют умным домом.

    В этой статье мы разрушим стены локальной разработки и выйдем в глобальную сеть. Мы изучим две стороны одной медали:

  • Клиентская часть: как с помощью библиотеки Requests отправлять запросы к другим сервисам.
  • Серверная часть: как с помощью микрофреймворка Flask создать свой собственный веб-сервис.
  • Основы интернета: Клиент-Серверная архитектура

    Прежде чем писать код, нужно понять, как устроен веб. В основе всего лежит модель «Клиент — Сервер».

    Представьте, что вы пришли в ресторан:

    * Вы (Клиент): Изучаете меню и делаете заказ официанту. * Официант (HTTP-запрос): Несет ваш заказ на кухню. * Кухня (Сервер): Получает заказ, проверяет наличие продуктов, готовит блюдо. * Официант (HTTP-ответ): Приносит вам готовое блюдо или сообщает, что ингредиенты закончились.

    В мире Python: * Ваш скрипт с библиотекой requests — это Клиент. * Сайт (например, Google или Wikipedia) — это Сервер. * Язык, на котором они общаются — это протокол HTTP.

    !Визуализация процесса обмена данными между клиентом и сервером по протоколу HTTP

    Requests: HTTP для людей

    В стандартной библиотеке Python есть модуль urllib для работы с сетью. Но пользоваться им — это как пытаться есть суп вилкой: возможно, но очень неудобно. Именно поэтому сообщество создало библиотеку Requests, девиз которой — «HTTP for Humans» (HTTP для людей).

    Установка

    Как мы уже умеем, активируем виртуальное окружение и устанавливаем пакет:

    Ваш первый GET-запрос

    Самый частый тип запроса — это GET. Он означает «дай мне информацию». Когда вы вводите адрес сайта в браузере, вы делаете именно GET-запрос.

    Давайте попробуем получить данные с сайта httpbin.org (это специальный сервис для тестирования запросов).

    Коды состояния (Status Codes)

    Сервер всегда сообщает, как прошел запрос, с помощью трехзначного числа:

    * 200 OK: Всё отлично, запрос выполнен. * 404 Not Found: Ресурс не найден (ошибка клиента). * 500 Internal Server Error: Сервер сломался (ошибка сервера).

    В коде это проверяется так:

    Работа с данными JSON

    В предыдущих уроках мы изучили формат JSON. В вебе это основной формат обмена данными. Библиотека requests умеет автоматически превращать ответ сервера из текста в словарь Python.

    Передача параметров

    Часто нам нужно уточнить запрос. Например, при поиске в Google вы передаете поисковую фразу. В URL это выглядит как ?q=python. В requests мы передаем это через словарь params.

    Flask: Ваш собственный веб-сервер

    Теперь перейдем на другую сторону баррикад. Что, если мы хотим не потреблять данные, а раздавать их? Нам нужен веб-фреймворк.

    Flask — это микрофреймворк. Приставка «микро» не означает, что он слабый. Это значит, что в нем нет ничего лишнего: только инструменты для маршрутизации и обработки запросов. Всё остальное (базы данных, валидация форм) подключается отдельно по мере необходимости.

    Установка

    Минимальное приложение

    Создайте файл app.py. Это будет наш сервер.

    Запустите этот файл через терминал: python app.py. Вы увидите сообщение, что сервер запущен на http://127.0.0.1:5000. Откройте этот адрес в браузере, и вы увидите ваш текст!

    Маршрутизация (Routing)

    Веб-сайт состоит из множества страниц. Во Flask каждая страница — это функция, «обернутая» в декоратор маршрута.

    Динамические маршруты

    Иногда часть адреса меняется. Например, профиль пользователя: /user/alex или /user/maria. Мы не будем писать функцию для каждого имени. Мы используем переменные в путях.

    Создание API (Возврат JSON)

    Помните, как requests читал JSON? Давайте научим Flask отдавать JSON. Это основа создания API (Application Programming Interface) — интерфейсов, через которые программы общаются друг с другом.

    Во Flask достаточно вернуть словарь Python, и он автоматически превратится в JSON.

    !Структура маршрутизации во Flask: URL-адреса связываются с функциями Python

    Практический пример: Связываем Requests и Flask

    Давайте создадим полную экосистему. У нас будет сервер (Flask), который считает квадрат числа, и клиент (Requests), который просит это сделать.

    1. Сервер (server.py):

    2. Клиент (client.py):

    Чтобы это сработало, нужно запустить server.py в одном окне терминала, а client.py — в другом.

    Заключение

    Сегодня мы сделали огромный шаг вперед. Мы перестали писать скрипты, которые работают «в вакууме», и научились взаимодействовать с внешним миром.

    * Requests позволяет нам брать данные из интернета, используя простые и понятные команды. * Flask дает возможность создавать свои веб-сервисы и API за считанные минуты.

    Эти навыки — база для любой современной разработки, будь то создание Telegram-бота, парсинг сайтов или разработка бэкенда для мобильного приложения.

    В следующей статье мы углубимся в тему данных и поговорим о том, как сохранять информацию не просто в файлы, а в настоящие базы данных с помощью SQL и ORM.

    Полезные ссылки

    * Документация библиотеки Requests * Документация фреймворка Flask * Сервис для тестирования запросов HTTPBin

    5. Визуализация данных и автоматизация: Matplotlib, Seaborn и Selenium

    Визуализация данных и автоматизация: Matplotlib, Seaborn и Selenium

    Добро пожаловать на завершающий этап нашего курса «Экосистема библиотек Python». Мы прошли большой путь: научились создавать изолированные окружения, работать с файловой системой, анализировать таблицы с помощью Pandas и даже создавать собственные веб-серверы на Flask.

    Однако в работе с данными есть два критически важных аспекта, которые мы еще не затронули:

  • Презентация результатов. Сухие таблицы с цифрами сложны для восприятия. Человеческий мозг лучше понимает графики и диаграммы.
  • Сложное взаимодействие с вебом. Библиотека requests отлично скачивает страницы, но она бессильна, если сайт требует нажатия кнопок, прокрутки или загружает контент через JavaScript.
  • В этой статье мы объединим искусство визуализации (Matplotlib, Seaborn) и мощь браузерной автоматизации (Selenium).

    Matplotlib: Дедушка визуализации в Python

    Matplotlib — это самая старая и фундаментальная библиотека для построения графиков в Python. Она настолько мощная, что на ней можно нарисовать практически всё, от простой линии до сложной 3D-анимации. Большинство других библиотек визуализации (включая Seaborn и встроенные графики Pandas) построены поверх Matplotlib.

    Анатомия графика

    Чтобы грамотно управлять графиками, нужно понимать иерархию объектов Matplotlib. Многие новички путаются, потому что не различают «Рисунок» и «Оси».

    !Иерархия объектов Matplotlib: Figure содержит Axes, которые содержат элементы графика

    * Figure (Рисунок): Это контейнер верхнего уровня. Представьте, что это чистый лист бумаги или окно, в котором будет всё рисоваться. * Axes (Оси): Это сам график — область с системой координат, где живут линии, точки и метки. На одной Figure может быть несколько Axes (например, 2 графика рядом).

    Установка и первый график

    Стандартный импорт выглядит так:

    В этом примере мы визуализировали простую математическую зависимость:

    где — значение функции (вертикальная ось), — аргумент функции (горизонтальная ось), а возведение в квадрат () показывает квадратичную зависимость.

    Типы графиков

    Matplotlib поддерживает десятки типов визуализации:

    * plt.bar() — столбчатые диаграммы. * plt.hist() — гистограммы распределения. * plt.scatter() — точечные диаграммы. * plt.pie() — круговые диаграммы.

    Seaborn: Красота и статистика

    Если Matplotlib — это мощный, но низкоуровневый инструмент (как молоток и зубило), то Seaborn — это станок с ЧПУ. Он создан специально для визуализации статистических данных и работает в тесной связке с Pandas.

    Главные преимущества Seaborn:

  • Меньше кода: Сложные графики строятся одной командой.
  • Дизайн: Графики по умолчанию выглядят современно и привлекательно.
  • Работа с DataFrame: Можно передавать таблицу Pandas целиком и указывать названия колонок.
  • Установка

    Визуализация распределений

    Допустим, у нас есть данные о счетах в ресторане. Мы хотим понять, как распределены суммы чеков и зависят ли чаевые от суммы счета.

    Обратите внимание на параметр hue. Он автоматически раскрашивает точки в разные цвета в зависимости от категории (в данном случае — времени посещения). В Matplotlib для этого пришлось бы писать цикл for.

    Тепловые карты (Heatmaps)

    Seaborn идеально подходит для поиска корреляций. Корреляция показывает, насколько две величины связаны друг с другом. Математически коэффициент корреляции Пирсона рассчитывается так:

    где: * — коэффициент корреляции (от -1 до 1). * — отдельные значения двух переменных. * — средние значения этих переменных. * — знак суммы.

    В Seaborn нам не нужно считать это вручную:

    Selenium: Когда Requests недостаточно

    Теперь перейдем от анализа данных к их добыче. В статье про веб-технологии мы использовали библиотеку requests. Она быстрая и легкая. Но современный интернет сложен.

    Многие сайты (например, маркетплейсы, соцсети, сайты бронирования) построены как SPA (Single Page Application). Это значит, что при первом запросе сервер отдает пустую страницу-шаблон, а контент подгружается позже с помощью JavaScript.

    Если вы сделаете requests.get() на такой сайт, вы получите пустой HTML без данных. Здесь на сцену выходит Selenium.

    Что такое Selenium?

    Selenium — это инструмент для автоматизации действий веб-браузера. Он запускает настоящий браузер (Chrome, Firefox), открывает сайт, ждет загрузки скриптов и позволяет вашему Python-скрипту «нажимать» на кнопки и вводить текст, притворяясь человеком.

    !Принцип работы Selenium: скрипт управляет браузером через драйвер

    Установка и настройка

    Вам понадобится библиотека и драйвер для вашего браузера.

    Пакет webdriver-manager избавит вас от необходимости скачивать драйверы вручную.

    Пример: Автоматический поиск в Google

    Напишем робота, который открывает Google, вводит запрос и делает скриншот результатов.

    Поиск элементов

    Самое сложное в Selenium — найти нужный элемент на странице. Для этого используется метод find_element и стратегии поиска By:

    * By.ID — поиск по уникальному id (самый надежный). * By.NAME — поиск по атрибуту name (часто у полей ввода). * By.CLASS_NAME — поиск по CSS-классу. * By.XPATH — поиск по пути в структуре HTML (самый мощный, но сложный).

    Headless Mode (Безголовый режим)

    Запуск браузера с графическим интерфейсом удобен для отладки, но на сервере это лишняя трата ресурсов. Selenium умеет работать в Headless режиме — браузер работает в фоне, без отрисовки окна.

    Заключение курса

    Поздравляем! Вы завершили обзорный курс по экосистеме Python. Давайте вспомним наш путь:

  • Мы начали с pip и venv, чтобы не засорять систему.
  • Изучили стандартную библиотеку для работы с ОС и файлами.
  • Освоили NumPy и Pandas для обработки данных.
  • Научились общаться с сетью через Requests и создавать API на Flask.
  • И сегодня добавили в арсенал визуализацию и браузерную автоматизацию.
  • Python — это не просто язык, это бесконечный набор инструментов. Теперь у вас есть карта, чтобы ориентироваться в этом мире и выбирать правильный инструмент для каждой задачи.

    Полезные ссылки

    * Галерея примеров Matplotlib * Учебник по Seaborn * Документация Selenium для Python