Визуализация в Jupyter Notebook: matplotlib и pandas

Введение
Jupyter Notebook — основной инструмент для аналитиков и дата-сайентистов. Его интерактивный веб-интерфейс удобен для быстрой визуализации, анализа данных и совместной работы. Визуализация помогает увидеть форму, тренды и аномалии в данных — через линии, бары, круги или плотности.
Этот материал пошагово покажет, как работать с графиками в Jupyter: базовые примеры, форматы, типичные ошибки, советы и готовые сниппеты.
Требования
Убедитесь, что у вас установлены Jupyter, pandas и matplotlib. В терминале выполните:
$ pip install jupyter
$ pip install pandas
$ pip install matplotlibЗапустите сервер Jupyter командой:
$ jupyter notebookImportant: не закрывайте терминал, в котором запущен сервер — это остановит Jupyter.
Быстрый старт: простой график
Откройте новую ячейку в блокноте и выполните этот код:
import matplotlib.pyplot as plt
x = [1,2,3,4,5,6,7,8]
y = [2,4,6,8,10,12,14,16]
plt.plot(x, y)
plt.show()
Объяснение: import подключает модуль pyplot; plt.plot рисует линию, plt.show отображает график. Масштаб осей рассчитывается автоматически. Если длины списков x и y различаются, Python вызовет ошибку при попытке построить график — проверяйте согласованность данных.
Чтобы нарисовать кривую, достаточно заменить значения y на соответствующие:
import matplotlib.pyplot as plt
x = [3,4,5,6,7,8,9,10,11,12]
y = [9,16,25,36,49,64,81,100,121,144]
plt.plot(x, y)
plt.show()
Доступные типы графиков
Некоторые типы, например гистограммы или area, требуют явного вызова соответствующей функции.
Столбчатая диаграмма
Используйте plt.bar для столбцов:
import matplotlib.pyplot as plt
x = [3,4,5,6,7,8,9,10,11,12]
y = [9,16,25,36,49,64,81,100,121,144]
plt.bar(x, y)
plt.show()
Точечная диаграмма
Для разброса точек используйте plt.scatter:
import matplotlib.pyplot as plt
x = [3,4,5,6,7,8,9,10,11,12]
y = [9,16,25,36,49,64,81,100,121,144]
plt.scatter(x, y)
plt.show()
Круговая диаграмма
Круговые диаграммы рисуются через plt.pie. Особое внимание уделите параметру figsize — он задаёт соотношение сторон фигуры.
import matplotlib.pyplot as plt
x = [4,9,16,25,36]
fig = plt.figure(figsize =(9, 5))
plt.pie(x)
plt.show()
Параметры pie, которые полезно знать:
- labels — подписи для каждого сектора;
- colors — список цветов (можно в hex или именах цветов);
- autopct — формат вывода процентного значения на секторе.
Пример с подписями и цветами:
import matplotlib.pyplot as plt
x = [4,9,16,25,36]
fig = plt.figure(figsize =(5.5, 5.5))
plt.pie(x, labels=('Guavas', 'Berries', 'Mangoes', 'Apples', 'Avocado'),
colors=('#a86544', '#eb5b13', '#ebc713', '#bdeb13', '#8aeb13'),
autopct='%1.1f%%')
plt.show()
Другие полезные типы: hist (гистограмма), area (площадь), kde (оценка плотности). Для них удобны встроенные методы pandas.
Форматирование графиков
Добавление заголовков, подписей осей и легенд делает графики информативными:
plt.title('Мой заголовок графика')
plt.xlabel('ось X')
plt.ylabel('ось Y')Несколько дополнительных приёмов:
- Сохранение: plt.savefig(‘figure.png’, dpi=150, bbox_inches=’tight’)
- Сетка: plt.grid(True)
- Легенда: plt.legend()
- Настройка стиля: plt.style.use(‘seaborn’) или ‘ggplot’
- Маркеры и линии: plt.plot(x, y, marker=’o’, linestyle=’–‘, color=’#2a9d8f’)
- Несколько графиков: fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(10,4))
Пример сохранения изображения
plt.plot(x, y)
plt.title('Пример сохранения')
plt.savefig('myplot.png', dpi=120)
plt.show()Практические советы и ловушки
Important: при работе с большими наборами данных scatter может сильно тормозить и точки будут накладываться. Для плотных точек рассмотрите прозрачность alpha, агрегацию или 2D-гистограмму.
Когда график не отображается:
- Проверьте, что plt.show() вызван;
- Убедитесь, что длины x и y совпадают;
- Если используете pandas.plot внутри Jupyter, перезапустите ядро при конфликтах версий библиотек.
Counterexamples / когда это не работает:
- График scatter с миллионами точек: рендеринг и интерпретация проблемны;
- Категориальные данные, поданные в функции, ожидающие чисел, вызовут некорректный результат;
- При использовании интерактивных бэкендов (например, %matplotlib notebook) поведение plt.show() и сохранения может отличаться.
Подход к визуализации: мини-методология
- Определите вопрос, который должны отвечать графики (тренд, распределение, корреляция).
- Выберите тип графика по задаче: распределение -> hist/kde, связь -> scatter/line, состав -> pie/bar.
- Подготовьте данные: агрегируйте, нормализуйте, обработайте пропуски.
- Нарисуйте черновой график и проверьте, читается ли нужная информация.
- Добавьте подписи, легенду, сетку и сохраните версию для отчёта.
Ментальные модели для выбора графика
- Число в динамике -> line
- Сравнение категорий -> bar
- Частотное распределение -> hist/kde
- Доля от целого -> pie (используйте с осторожностью)
- Плотные точки -> hexbin или 2D-hist
Чек-лист по ролям
Data Scientist:
- Проверил соответствие длин осей
- Попробовал несколько типов для одной задачи
- Сохранил визуализации в высоком разрешении
Data Analyst:
- Добавил заголовки и подписи осей
- Подписал легенду и указал единицы измерения
- Подготовил версии для отчёта в PNG/PDF
ML Engineer:
- Сгенерировал диагностические графики (loss/accuracy)
- Автоматизировал сохранение в папку артефактов
- Убедился, что графики воспроизводимы в CI
Product Manager:
- Получил краткие поясняющие подписи
- Проверил, что ключевой инсайт виден без глубокого анализа
Сниппеты и шпаргалка
- Подписи и стиль:
plt.style.use('seaborn')
plt.plot(x, y, marker='o')
plt.title('Заголовок')
plt.xlabel('X, единицы')
plt.ylabel('Y, ед.')
plt.legend(['серия 1'])
plt.grid(True)- Несколько подграфиков:
fig, axs = plt.subplots(1, 2, figsize=(10,4))
axs[0].plot(x, y)
axs[1].bar(x, y)
plt.tight_layout()- Сохранение и прозрачность:
plt.scatter(x, y, alpha=0.6)
plt.savefig('scatter.png', dpi=150, bbox_inches='tight')Сравнение: matplotlib vs pandas.plot vs seaborn
- matplotlib: самая низкоуровневая и гибкая библиотека; требует больше кода для настроек.
- pandas.plot: быстрый способ визуализации DataFrame без явной работы с осами.
- seaborn: высокоуровневый API для статистических графиков, красивые стили по умолчанию.
Выбор: для быстрой разведки — pandas.plot; для публикации — matplotlib с дополнительными настройками; для статистики и красивых визуализаций — seaborn.
Критерии приёмки
- График отображается без исключений и ошибок в консоли;
- Заголовок и подписи осей присутствуют и информативны;
- Легенда есть при нескольких сериях данных;
- График сохранён в нужном формате и разрешении.
Короткий глоссарий
matplotlib — основная библиотека для отрисовки графиков в Python. pyplot — модуль matplotlib с процедурным API (plt). pandas — библиотека для обработки табличных данных и простых визуализаций. figsize — кортеж, задающий размер рисунка в дюймах. dpi — плотность точек на дюйм при сохранении изображения.
Где учиться дальше
- Официальная документация matplotlib и pandas содержит подробные примеры и гайды по каждому типу графика.
- Попробуйте визуализировать реальные csv-файлы: это лучший способ отточить навык.
Важно: визуализация — инструмент коммуникации. Делайте графики понятными для аудитории: подписи, легенды и комментарии иногда важнее эстетики.
Подведение итогов
- Jupyter + matplotlib/pandas позволяет быстро создавать и настраивать графики;
- Проверяйте соответствие длин осей и выбирайте тип визуализации по задаче;
- Используйте готовые сниппеты, стили и сохранение в высоком разрешении для отчётов.
Summary:
- Начните с простых графиков, затем переходите к форматированию;
- Для больших наборов данных используйте агрегацию или методы, снижающие визуальную перегрузку;
- Документируйте и сохраняйте версии графиков для воспроизводимости.
Похожие материалы
Подготовка к техническому собеседованию разработчика
Запуск мастера устранения неполадок в Windows
Как создать мем: полное руководство
Как устранить BSOD 0x0000003B в Windows
Clone Stamp в Photoshop — подробное руководство