Перейти к содержимому

Ipython как сохранить код

  • автор:

Каким образом можно не выполнять заново код? [закрыт]

Закрыт. Этот вопрос необходимо уточнить или дополнить подробностями. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.

Закрыт 3 года назад .

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

Отслеживать
13.7k 12 12 золотых знаков 43 43 серебряных знака 75 75 бронзовых знаков
задан 7 авг 2020 в 15:31
D.Vinogradov D.Vinogradov
1,411 8 8 серебряных знаков 19 19 бронзовых знаков
Не понял, что значит на каждом этапе мы его «проверяем». Кто мы? Что значит «проверяем»?
7 авг 2020 в 15:33
Ни че го не понял. (
7 авг 2020 в 15:43

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

7 авг 2020 в 15:53

@dlm0n , кто мы? Мы это значит я, либо тот у кого возник такой же вопрос. Проверяем — значит, когда ты пишешь код, то ты его запускаешь на некоторых этапах. Или ваш код в сотни строк без ошибок и проверок пишется на раз два?)

7 авг 2020 в 17:08

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

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

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

Отслеживать
ответ дан 7 авг 2020 в 16:00
2,687 6 6 серебряных знаков 13 13 бронзовых знаков

Можно воспользоваться ipython либо в «чистом» виде, либо в виде Jupyter Notebook , что ещё удобнее. В Jupyter Notebook можно выполнять отдельные «ячейки» с кодом, причём в произвольном порядке. Состояние переменных при этом сохраняется в памяти. Можно пробовать запускать разные куски кода, не запуская при этом весь код «с нуля». Дописать на ходу код и запустить его с текущим состоянием памяти и переменных. Для исследовательских целей и чтобы разобраться как что-то работает, попробовать всякое, это очень удобно. Посмотреть и попробовать, как это выглядит, можно, например, в Google Colab.

Отслеживать
ответ дан 7 авг 2020 в 16:33
69.4k 5 5 золотых знаков 20 20 серебряных знаков 51 51 бронзовый знак
Про Юпитер думал, но в нем не очень удобно работать. Спасибо за идею!
7 авг 2020 в 17:02
кажется PyCharm это умеет
7 авг 2020 в 17:37
@alex в нем и работаю
7 авг 2020 в 18:00

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

Python. Урок 6. Работа с IPython и Jupyter Notebook

Follow us on Google Plus Follow us on rss

IPython представляет собой мощный инструмент для работы с языком Python. Базовые компоненты IPython – это интерактивная оболочка для с широким набором возможностей и ядро для Jupyter. Jupyter notebook является графической веб-оболочкой для IPython, которая расширяет идею консольного подхода к интерактивным вычислениям.

Основные отличительные особенности данной платформы – это комплексная интроспекция объектов, сохранение истории ввода на протяжении всех сеансов, кэширование выходных результатов, расширяемая система “магических” команд, логирование сессии, дополнительный командный синтаксис, подсветка кода, доступ к системной оболочке, стыковка с pdb отладчиком и Python профайлером.

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

В Jupyter notebook вы можете разрабатывать, документировать и выполнять приложения на языке Python, он состоит из двух компонентов: веб-приложение, запускаемое в браузере, и ноутбуки – файлы, в которых можно работать с исходным кодом программы, запускать его, вводить и выводить данные и т.п.

Веб приложение позволяет:

  • редактировать Python код в браузере, с подсветкой синтаксиса, автоотступами и автодополнением;
  • запускать код в браузере;
  • отображать результаты вычислений с медиа представлением (схемы, графики);
  • работать с языком разметки Markdown и LaTeX.

Ноутбуки – это файлы, в которых сохраняются исходный код, входные и выходные данные, полученные в рамках сессии. Фактически, он является записью вашей работы, но при этом позволяет заново выполнить код, присутствующий на нем. Ноутбуки можно экспортировать в форматы PDF, HTML.

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

Jupyter Notebook входит в состав Anaconda. Описание процесса установки можно найти в первом уроке. Для запуска Jupyter Notebook перейдите в папку Scripts (она находится внутри каталога, в котором установлена Anaconda) и в командной строке наберите:

> ipython notebook

В результате будет запущена оболочка в браузере.

Окно Jupyter notebook

Примеры работы

Будем следовать правилу: лучше один раз увидеть… Рассмотрим несколько примеров, выполнив которые, вы сразу поймете принцип работы с Jupyter notebook.

Запустите Jupyter notebook и создайте папку для наших примеров, для этого нажмите на New в правой части экрана и выберите в выпадающем списке Folder.

Создание папки в Jupyter notebook

По умолчанию папке присваивается имя “Untitled folder”, переименуем ее в “notebooks”: поставьте галочку напротив имени папки и нажмите на кнопку “Rename”.

Переименование папки в Jupyter notebook

Зайдите в эту папку и создайте в ней ноутбук, воспользовавшись той же кнопкой New, только на этот раз нужно выбрать “Python [Root]”.

Создание notebook

В результате будет создан ноутбук.

Jupyter notebook

.

Код на языке Python или текст в нотации Markdown нужно вводить в ячейки:

Jupyter notebook cell

Если это код Python, то на панели инструментов нужно выставить свойство “Code”.

Выбор типа ячейки

Если это Markdown текст – выставить “Markdown”.

Выбор типа ячейки

Для начал решим простую арифметическую задачу: выставите свойство “Code”, введите в ячейке “2 + 3” без кавычек и нажмите Ctrl+Enter или Shift+Enter, в первом случае введенный вами код будет выполнен интерпретатором Python, во втором – будет выполнен код и создана новая ячейка, которая расположится уровнем ниже так, как показано на рисунке.

3+2 пример в Jupyter notebook

Если у вас получилось это сделать, выполните еще несколько примеров.

Пример работы в Jupyter notebook

Основные элементы интерфейса Jupyter notebook

У каждого ноутбука есть имя, оно отображается в верхней части экрана. Для изменения имени нажмите на его текущее имя и введите новое.

Изменение имени notebook

Из элементов интерфейса можно выделить, панель меню:

Панель меню Jupyter notebook

Панель инструментов Jupyter notebook

и рабочее поле с ячейками:

Рабочее поле с ячейками

Ноутбук может находиться в одном из двух режимов – это режим правки (Edit mode) и командный режим (Command mode). Текущий режим отображается на панели меню в правой части, в режиме правки появляется изображение карандаша, отсутствие этой иконки значит, что ноутбук находится в командном режиме.

Режим редактирования ячейки

Для открытия справки по сочетаниям клавиш нажмите “Help->Keyboard Shortcuts”

Сочетания клавиш в Jupyter notebook

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

Python kernel остановлен

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

Запуск и прерывание выполнения кода

Если ваша программа зависла, то можно прервать ее выполнение выбрав на панели меню пункт Kernel -> Interrupt.

Для добавления новой ячейки используйте Insert->Insert Cell Above и Insert->Insert Cell Below.

Для запуска ячейки используете команды из меню Cell, либо следующие сочетания клавиш:

Ctrl+Enter – выполнить содержимое ячейки.

Shift+Enter – выполнить содержимое ячейки и перейти на ячейку ниже.

Alt+Enter – выполнить содержимое ячейки и вставить новую ячейку ниже.

Как сделать ноутбук доступным для других людей?

Существует несколько способов поделиться своим ноутбуком с другими людьми, причем так, чтобы им было удобно с ним работать:

  • передать непосредственно файл ноутбука, имеющий расширение “.ipynb”, при этом открыть его можно только с помощью Jupyter Notebook;
  • сконвертировать ноутбук в html;
  • использовать https://gist.github.com/ ;
  • использовать http://nbviewer.jupyter.org/.

Вывод изображений в ноутбуке

Печать изображений может пригодиться в том случае, если вы используете библиотеку matplotlib для построения графиков. По умолчанию, графики не выводятся в рабочее поле ноутбука. Для того, чтобы графики отображались, необходимо ввести и выполнить следующую команду:

%matplotlib inline

Пример вывода графика представлен на рисунке ниже.

Пример вывода графика

Магия

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

%lsmagic

Список magic команд

Для работы с переменными окружения используется команда %env.

Работа с %env

Запуск Python кода из “.py” файлов, а также из других ноутбуков – файлов с расширением “.ipynb”, осуществляется с помощью команды %run.

Работа с %run

Для измерения времени работы кода используйте %%time и %timeit.

%%time позволяет получить информацию о времени работы кода в рамках одной ячейки.

Работа с %%time

%timeit запускает переданный ей код 100000 раз (по умолчанию) и выводит информацию среднем значении трех наиболее быстрых прогонах.

Работа с %timeit

Информацию по остальным магическим командам можете найти здесь:

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

P.S.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.

Раздел: Python Уроки по Python Метки: Python, Уроки Python

Python. Урок 6. Работа с IPython и Jupyter Notebook : 4 комментария

  1. Уведомление: Adopting IPython & Jupyter For Selenium Testing: Plan, Write, Validate Tests in Python | Shakuro
  2. Михаил Филиппов 17.01.2021 ” это интерактивная оболочка для с широким набором возможностей ”
    после ДЛЯ пропало слово
  1. Ксения 30.10.2023 Сначала прописать activate baze, затем jupyter notebook. Также можно вызвать Anaconda Navigator и из него Jupiter Notebook

Как и для чего экспортировать красивые отчеты из Jupyter Notebook в PDF

Если вы специалист по анализу данных и вам нужно представить отчет для заказчика, если вы ищете работу и не знаете, как оформить тестовое задание так, чтобы на вас обратили внимание, если у вас много учебных проектов, связанных с аналитикой и визуализацией данных, то сегодняшний пост будет вам очень и очень полезен. Дело в том, что смотреть на чужой код в Jupyter Notebook бывает проблематично, ведь результат часто теряется между множеством строк кода с подготовкой данных, импортом нужных библиотек и серией попыток реализовать ту или иную идею. Именно поэтому такой метод, как экспорт результатов в PDF-файл в формате LaTeX — это отличный вариант для итоговой визуализации, который сэкономит время и будет выглядеть презентабельно. В научных кругах статьи и отчеты очень часто оформляются именно с использованием LaTeX, поскольку он имеет ряд преимуществ:

  • Математические уравнения и формулы выглядят аккуратнее.
  • Библиография создается автоматически, на основе всех использованных в документе ссылок.
  • Автор может сосредоточиться на содержании, а не на внешнем виде документа, так как верстка текста и других данных происходит автоматически с помощью указания необходимых параметров в коде.

Сегодня мы подробно расскажем о том, как научиться экспортировать вот такие красивые отчеты из Jupyter Notebook в PDF с использованием LaTeX.

Установка LaTeX

Самый важный момент в формировании отчета из Jupyter Notebook на Python — это его экспорт в финальный файл. Для этого применяется одна библиотека — nbconvert — которая конвертирует ваш ноутбук в любой удобный формат документа: pdf (как в нашем случае), html, latex или другой. Эту библиотеку нужно не просто установить, а провести некоторую процедуру по предустановке нескольких других пакетов: Pandoc, TeX и Chromium. По ссылке на библиотеку весь процесс описан очень подробно для каждого программного обеспечения, поэтому подробно мы на нем останавливаться не будем.
Как только вы завершили все предварительные шаги, нужно установить и импортировать библиотеку в ваш Jupyter Notebook.

!pip install nbconvert import nbconvert

Экспорт таблиц в Markdown формат

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

data_g = px.data.gapminder() summary = round(data_g.describe(),2) summary.insert(0, 'metric', summary.index) # Функция для преобразования dataframe в Markdown Table def pandas_df_to_markdown_table(df): from IPython.display import Markdown, display fmt = ['---' for i in range(len(df.columns))] df_fmt = pd.DataFrame([fmt], columns=df.columns) df_formatted = pd.concat([df_fmt, df]) display(Markdown(df_formatted.to_csv(sep="|", index=False))) pandas_df_to_markdown_table(summary)

Экспорт изображения в отчет

В этом примере мы будем строить bubble-chart, про методику построения которых рассказывали в недавнем посте. В прошлый раз мы использовали пакет Seaborn, наглядно показывая, что отображение данных размером кругов на графике происходит корректно. Такие же графики можно построить и при помощи пакета Plotly.
Для того чтобы отобразить график, построенный в Plotly в отчете тоже нужно немного постараться. Дело в том, что plt.show() не поможет отобразить график при экспорте. Поэтому, нужно сохранить получившийся график в рабочей директории, а затем, используя библиотеку iPython.display, отобразить его с помощью функции Image().

from IPython.display import Image import plotly.express as px fig = px.scatter(data_g.query("year==2007"), x="gdpPercap", y="lifeExp", size="pop", color="continent", log_x=True, size_max=70) fig.write_image('figure_1.jpg') Image(data = 'figure_1.jpg', width = 1000)

Формирование и экспорт отчета

Когда все этапы анализа данных завершены, отчет можно экспортировать. Если вам нужны заголовки или текст в отчете, то пишите его в ячейках ноутбука, сменив формат Code на Markdown. Для экспорта можно использовать терминал, запуская там вторую строку без восклицательного знака, либо можно запустить код, написанный ниже, в ячейке ноутбука. Мы советуем не загружать отчет кодом, поэтому используем параметр TemplateExporter.exclude_input=True, чтобы ячейки с кодом не экспортировались. Также, при запуске этой ячейки код выдает стандартный поток (standard output) и, чтобы в отчете его не было видно, в начале ячейки нужно написать %%capture.

%%capture !jupyter nbconvert --to pdf --TemplateExporter.exclude_input=True ~/Desktop/VALIOTTI/Reports/Sample\LaTeX\ Report.ipynb !open ~/Desktop/VALIOTTI/Reports/Sample\ LaTeX\ Report.pdf

Если вы все сделали верно и методично, то в итоге получится вот такой отчет! Презентуйте данные красиво 🙂

Python How-to

Как сделать интерактивные графики с помощью matplotlib?

import matplotlib.pyplot as plt %matplotlib nbagg
import matplotlib.pyplot as plt %matplotlib notebook

Как активировать plotly off-line?

from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot import plotly import plotly.graph_objs as go init_notebook_mode(connected=True)

Как скрыть ячейки с кодом в Jupyter?

from IPython.display import HTML HTML('''  
''')

Как сохранить внешние картинки при экспорте notebook в html?

Use the CLI, Luke.

jupyter nbconvert --to html_embed mynotebook.ipynb

Как быстро вычислять на питоне?

Если кратко, то NumPy и SciPy. Если более подробно то perfomance python.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *