Как получить графики с ноутбука Jupiter

Обновлено: 21.11.2024

Это выдержка из Jupyter Notebook, над которой я работал сегодня. Я не мог получить желаемый результат из некоторых результатов запросов в виде снежинок, и мне нужно было немного лучше понять, как представлять блокплоты.

Я столкнулся с ситуацией, когда мне нужно было обобщить результаты некоторых тестов, в которых у меня было две категории.

  • Категория верхнего уровня ( level1 ) содержала названия определенных SQL-запросов.
  • Второй уровень ( level2 ) определил несколько различных серверов SQL, которые тестировались.

Время ответа на запрос responseMS — это количество миллисекунд, необходимое для выполнения запроса, но не включает время на передачу результатов обратно клиенту.

Определить количество выборок, которые будут смоделированы со случайными данными.

Определить количество уникальных категорий level1 и level2.

Создать уникальные категории level1 и level2

Для списка я случайным образом выбираю элементы размера из списка в качестве генератора.

Создайте фрейм данных с двумя категориями уровня и случайными выборками

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

Быстрая первая попытка построить коробочную диаграмму. Я вижу, что мне нужно, но трудно общаться с другими.

Решил попробовать Seaborn, так как сейчас на него довольно много упоминаний…

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

Всегда приятно видеть точки, представляющие коробчатую диаграмму, если только точек не слишком много. После балла баллы перегружаются и не должны отображаться.

График роевого разброса добавляет интересной организации к разбросу.

Просто хотел посмотреть рой без сюжетной линии.

Углубление в презентацию двух категорий. Пришлось читать о кошачьем заговоре. Похоже, то, что мне нужно.

Это то, что я искал. Для каждой категории уровня 1 сравните диаграммы для категорий уровня 2.

Кроме того, я хотел посмотреть, сколько работы потребуется, чтобы перевести Jupyter Notebook на уценку Hugo. Не слишком сложно.

В Jupyter выберите файл -> Загрузить как -> Markdown. Будет загружен .zip, содержащий блокнот в формате .md, а также все графики в формате png.

Переместите файл уценки в статическую папку Hugo и добавьте блок заголовка +++, содержащий заголовок, дату, описание и т. д.

Переместите изображения .jpg в папку Hugo static/img. Я добавил к ним префикс, чтобы закрепить их в статье.

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

Введение¶

В Jupyter есть красивая записная книжка, которая позволяет писать и выполнять код, анализировать данные, встраивать контент и делиться воспроизводимой работой. Блокнот Jupyter (ранее известный как Блокнот IPython) позволяет легко обмениваться кодом, данными, графиками и пояснениями в одном блокноте. Публикация гибкая: PDF, HTML, ipynb, информационные панели, слайды и многое другое. Ячейки кода основаны на формате ввода и вывода. Например:

Установка¶

Есть несколько способов использования Jupyter Notebook:

  • Установить с помощью pip . Откройте терминал и введите: $ pip install jupyter .
  • Пользователи Windows могут выполнить установку с помощью setuptools . и Enthought позволяют загрузить настольную версию Jupyter Notebook. позволяет пользователям работать в среде ноутбука через настольное приложение. предоставляет размещенный доступ к Jupyter Notebooks. предлагает веб-ноутбуки. запускает временную онлайн-блокнот для отдельных пользователей.

Начало работы¶

Полезные команды¶

– Завершение с помощью табуляции: Jupyter поддерживает автодополнение с помощью табуляции! Вы можете ввести имя_объекта. для просмотра атрибутов объекта. Советы по клеточной магии, запуску Блокнотов и изучению объектов можно найти в документации Jupyter.
– Справка: введение и обзор функций.

– Краткий справочник: откройте краткий справочник, выполнив:

- Сочетания клавиш: Shift-Enter запустит ячейку, Ctrl-Enter запустит ячейку на месте, Alt-Enter запустит ячейку и вставит другую ниже. Другие сочетания клавиш смотрите здесь.

Языки¶

Большая часть этого руководства посвящена выполнению кода Python в блокнотах Jupyter. Вы также можете использовать блокноты Jupyter для выполнения кода R. Перейдите к разделу [R] для получения дополнительной информации об использовании IRkernel с блокнотами Jupyter и примерами построения графиков.

Управление пакетами¶

При установке пакетов в Jupyter вам нужно либо установить пакет в реальной оболочке, либо запустить команду ! префикс, например:

Возможно, вы захотите перезагрузить подмодули, если вы редактировали код в одном из них. IPython поставляется с магией автоматической перезагрузки. Вы можете перезагрузить все измененные модули перед выполнением новой строки.

Jupyter Notebook – это инструмент номер один для специалистов по обработке и анализу данных. Он предлагает интерактивный веб-интерфейс, который можно использовать для визуализации данных, удобного анализа и совместной работы.

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

Предпосылки

На вашем компьютере должен быть установлен Jupyter. Если это не так, вы можете установить его, введя следующий код в командную строку:

Вам также понадобятся библиотеки pandas и matplotlib:

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

Примечание. Не закрывайте окно терминала, в котором вы запускаете эту команду. Если вы это сделаете, ваш сервер остановится.

Простой сюжет

На новой странице Jupyter запустите этот код:

Код предназначен для простого линейного графика. Первая строка импортирует графическую библиотеку pyplot из API matplotlib. Третья и четвертая строки определяют оси x и y соответственно.

Метод plot() вызывается для построения графика. Затем для отображения графика используется метод show().

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

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

Если вы также будете бдительны, вы можете заметить, что количество значений для осей x и y одинаково. Если какой-либо из них меньше другого, при запуске кода будет отмечена ошибка, и график не будет отображаться.

Доступные типы

В отличие от линейного графика и кривой, приведенных выше, для отображения других графических представлений (например, гистограммы, гистограммы и т. д.) требуется явное определение.

Гистограмма

Чтобы отобразить гистограмму, вам нужно будет использовать метод bar().

Точечная диаграмма

Все, что вам нужно сделать, это использовать метод scatter() в предыдущем коде.

Я использую блокнот IPython со встроенной опцией --pylab, поскольку не хочу, чтобы графики отображались в другом окне. Теперь я хочу сохранить графики, которые я вижу в блокноте, в файлы PDF или PNG.

В некоторых примерах кода используется

но, похоже, это не работает во встроенном режиме.

Конечно, я мог бы просто сохранить PNG, сгенерированный из браузера, но я хотел бы сделать это с помощью строки Python. Меня также интересует экспорт PDF.

Я использую этот небольшой лайфхак jupyter nbconvert --to markdown *.ipynb . Он создает каталог для каждого блокнота для хранения изображений

1 Ответ 1

попробуйте это (обратите внимание, что файлы сохраняются в папку записной книжки по умолчанию):

если вы хотите png, просто измените его на 'sample.jpg' .

Обратите внимание, что вызов savefig() должен находиться в той же ячейке блокнота, что и команды построения графика.

просто укажите папку в своем пути, например: 'home/foo/bar/sample.pdf', если вы хотите сохранить графики в другую папку. изменение каталога по умолчанию также приведет к перемещению файлов блокнота.

@cls сначала скопируйте файлы *.ipynb в нужный каталог. затем запустите сервер блокнота с помощью $ ipython ноутбука --pylab=inline --notebook-dir=/path/to/my/notebooks

@root: Похоже, ключевым моментом является сохранение savefig() в той же ячейке, что и команды построения графика. Фактически, plot() в одной ячейке и savefig() в следующей ячейке не сохраняет файл (IPython 0.13 для Mac OS X через MacPorts). Было бы неплохо, если бы это было подчеркнуто в вашем ответе.

@EOL @ZachDwiel Кто-нибудь из вас знает, почему savefig() должен находиться в той же ячейке, что и команды построения графика?

@braunmagrin Хороший вопрос. Меня это поначалу удивило. Я могу предположить, что когда вы открываете блокнот, текущей цифры нет, так как блокнот обычно содержит много цифр.Кроме того, при выходе из ячейки текущая фигура отсутствует, поэтому savefig() не имеет цели. Опять же, я просто догадываюсь... Я не уверен, почему последняя цифра на графике не может быть текущей цифрой по соглашению.

Эта статья является продолжением моей предыдущей статьи об анализе данных с помощью Python. Я собираюсь использовать свое базовое введение в IPython, блокноты и панды, чтобы показать, как визуализировать данные, которые вы обработали с помощью этих инструментов. Я надеюсь, что это продемонстрирует вам (еще раз), насколько мощны эти инструменты и как много вы можете сделать с таким небольшим кодом. В конечном итоге я надеюсь, что эти статьи помогут людям перестать обращаться к Excel каждый раз, когда им нужно нарезать и нарезать какие-то файлы. Инструменты в среде Python могут быть гораздо более мощными, чем ручное копирование и вставка, которые большинство людей делают в Excel.

Я расскажу, как начать делать простые графики и графики данных в pandas. Я использую новый файл данных того же формата, что и моя предыдущая статья, но включающий данные только для 20 клиентов. Если вы хотите продолжить, файл доступен здесь.

Начало работы

Как описано в предыдущей статье, я использую блокнот IPython для изучения своих данных.

Сначала мы собираемся импортировать библиотеки pandas, numpy и matplot. Я также показываю версию панд, которую использую, чтобы вы могли убедиться, что ваша версия совместима.

Затем включите IPython для отображения графиков matplotlib.

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

< tr>
номер счета имя артикул категория количество цена за единицу расходная цена дата
0 296809 Carroll PLC QN-82852 Ремень 13< /td> 44,48 578,24 2014-09-27 07:13:03
1 98022 Heidenreich-Bosco MJ-21460 Обувь 19 53.62< /td> 1018.78 2014-07-29 02:10:44
2 563905 Kerluke, Reilly and Bechtelar AS-93055 Рубашка 12 24,16 289,92 2014-03-01 10:51:24
3 93356 Уотерс- Уокер AS-93055 Рубашка 5 82,68 413,40 2013-11-17 20:41:11
4 659366 Велчи-Фэйи AS-93055 Рубашка 18 99,64 1793.52 2014-01-03 08:14:27

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

< td>579,84390 < /tr> < tr>

С помощью этой простой команды мы можем получить довольно полезную информацию:

  • Мы можем сказать, что клиенты в среднем покупают 10,3 товара за транзакцию.
  • Средняя стоимость транзакции составила 579,84 доллара США.
  • Также легко увидеть минимальные и максимальные значения, чтобы понять диапазон данных.

Если мы хотим, мы можем просмотреть и один столбец:

Я вижу, что моя средняя цена составляет 56,18 долларов США, но она колеблется от 10,06 до 99,97 долларов США.

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

Нанесение некоторых данных

Мы прочитали наши данные и выполнили базовый анализ. Давайте начнем его рисовать.

Сначала удалите некоторые столбцы, чтобы упростить дополнительный анализ.

номер счета количество цена за единицу ext цена
количество 1000.000000 1000.000000 1000.000000 1000,00000
среднее 535208,897000 10,328000 56,179630
std 277589,746014 5,687597 25,331939 435,30381
мин 93356,000000 1,000000 10,060000 10,38000
25% 299771,000000 5,750000 35,995000 232,60500
50% 563905,000000 10,000000 56,765000 471,72000
75% 750461,000000 15,000000 76,802500 878,13750
max 995267.000000 20,000000 99,970000 1994,80000
< td>289.92 < td>413.40 < td>1793.52
имя расширенная цена дата
0 Carroll PLC 578.24 2014-09-27 07:13:03
1 Хайденрайх-Боско 1018.78 2014-07-29 02:10:44
2 Керлюк, Рейли и Бехтелар 2014-03-01 10:51:24
3 Уотерс-Уокер 2013-11-17 20:41:11
4 Ваелчи-Фэйи 2014-01-03 08:14:27

Это представление содержит несколько строк для каждого клиента. Чтобы понять модели покупок, давайте сгруппируем всех клиентов по именам. Мы также можем посмотреть количество записей на клиента, чтобы получить представление о распределении.

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

Функция суммирования позволяет нам быстро суммировать все значения по клиентам. Мы также можем отсортировать данные с помощью команды sort.

< /th>
дополнительная цена
имя
Дэвис, Кшлерин и Рейли 19054,76
Хуэль-Хааг 21087,88
Горчани-Хан 22207,90
Хэмилл-Хаккет 23433,78
Heidenreich-Bosco 25428,29

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

К сожалению, эта диаграмма немного уродлива. С помощью нескольких настроек мы можем сделать его немного более эффектным. Давайте попробуем:

  • сортировка данных по убыванию
  • удаление легенды
  • добавление заголовка
  • обозначение осей

На самом деле это немного говорит нам о наших крупнейших клиентах и ​​о том, насколько велика разница между их продажами и нашими самыми маленькими клиентами.

Теперь давайте попробуем посмотреть, как продажи распределяются по категориям.

имя категория расширенная цена дата
0 Carroll PLC Пояс 578,24 2014-09-27 07:13:03
1 Heidenreich-Bosco Обувь 1018,78 2014-07-29 02:10:44
2 Керлюк, Рейли и Бехтелар< /td> Рубашка 289.92 2014-03-01 10:51:24
3 Waters-Walker Рубашка 413.40 2013-11-17 20:41:11
4 Waelchi-Fahey Рубашка 1793.52 2014-01-03 08:14:27

Мы можем использовать groupby для организации данных по категориям и именам.

дополнительная цена
имя категория< /th>
Berge LLC Пояс 6033.53
Рубашка 9670.24
Обувь 14361.10
Carroll PLC Пояс 9359.26
Рубашка 13717.61

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

дополнительная цена
категория Пояс< /th> Рубашка Обувь
имя
Berge LLC 6033,53 9670,24 14361,10
Carroll PLC 9359,26 13717,61 12857,44
Коул-Эйхманн 8112,70 14528,01 7794,71
Дэвис, Кшлерин и Рейли 1604,13 7533,03 9917,60
Эрнсер, Круикшенк и Линд 5894,38 16944,19 5250,45

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

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

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

< tr> < /tbody>
расширенная цена дата
0 578.24 2014-09-27 07:13:03
1 1018,78 2014-07-29 02:10:44
2 289,92 2014-03-01 10:51:24
3 413.40 2013-11-17 20:41: 11
4 1793.52 2014-01-03 08:14:27

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

Изучая схемы покупок с течением времени, мы видим, что стоимость большинства наших транзакций составляет менее 500 долларов США, и лишь очень немногие — около 1 500 долларов США.

Еще один интересный способ просмотра данных – анализ продаж во времени. Диаграмма может помочь нам понять: «Есть ли у нас определенные месяцы, когда мы более заняты, чем другие?»

Давайте сократим данные до размера и даты заказа.

< tr> < /tbody>
расширенная цена дата
0 578.24 2014-09-27 07:13:03
1 1018,78 2014-07-29 02:10:44
2 289,92 2014-03-01 10:51:24
3 413.40 2013-11-17 20:41: 11
4 1793.52 2014-01-03 08:14:27

Если мы хотим проанализировать данные по дате, нам нужно установить столбец даты в качестве индекса, используя set_index .

< /th>
расширенная цена
дата
2014-09-27 07:13:03 578.24
2014-07-29 02 :10:44 1018,78
2014-03-01 10:51:24 289,92
2013-11-17 20:41:11 413.40
2014-01-03 08:14:27 1793.52

Одна из действительно крутых вещей, которые позволяет нам делать панда, — это повторная выборка данных. Если мы хотим просмотреть данные по месяцам, мы можем легко произвести повторную выборку и суммировать все это. Вы заметите, что я использую «М» в качестве периода повторной выборки, что означает, что данные должны быть пересчитаны на границе месяца.

Теперь наносить данные на график очень просто

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

Допустим, нам очень нравится этот сюжет, и мы хотим сохранить его где-нибудь для презентации.

Собираем все вместе

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

Вот пример объединения всего этого в один файл:

В этом коде впечатляет то, что в 55 строках (включая комментарии) я создал очень мощную, но простую для понимания программу для многократной обработки данных и создания полезного вывода.

Надеюсь, это будет полезно. Не стесняйтесь оставлять отзывы в комментариях и дайте мне знать, если это будет полезно.

Читайте также: