[Перевод] Учебное пособие по Jupyter Notebook для начинающих

Python GitHub Программа перевода самородков Markdown

Учебник по Jupyter Notebook для начинающих

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

Project Jupyter является преемником более раннего ноутбука IPython, прототип которого был впервые выпущен в 2010 году. Хотя в Jupyter Notebook можно использовать много разных языков программирования, в этой статье основное внимание будет уделено Python, поскольку он наиболее распространен в Jupyter Notebooks.

Чтобы полностью понять этот учебник, вы должны быть знакомы с программированием, особенно с Python иpandas(Примечание переводчика: Pandas — это пакет анализа данных для Python). Тем не менее, если у вас есть опыт программирования, Python в этой статье не будет слишком незнакомым, и pandas также легко понять. Jupyter Notebooks также можно использовать в качестве гибкой платформы для запуска pandas и даже Python, о чем пойдет речь в этом посте.

мы будем:

  • Охватывает некоторые основы установки Jupyter и создания вашего первого ноутбука.
  • Копайте глубже и выучите все важные термины.
  • Узнайте, как легко обмениваться заметками и публиковать их в Интернете. По сути, эта статья — блокнот Jupyter! Все здесь написано в среде ноутбука Jupyter, и вы просматриваете его только для чтения.

Пример анализа данных Jupyter Notebook

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

Допустим, вы аналитик данных, и вам поручено выяснить историю изменения прибыли крупнейших компаний Америки. Вы найдете наборы данных о компаниях из списка Fortune 500, охватывающих более 50 лет с момента первой публикации списка в 1955 году."богатство"собраны из государственных архивов. Мы создали файл CSV с полезными данными (вы можете найти его вздесьвозьми).

Как мы покажем, ноутбуки Jupyter идеально подходят для этого исследования. Во-первых, давайте установим Jupyter.

Установить

Самый простой способ для новичков начать работу с Jupyter Notebooks — установитьAnaconda. Anaconda является наиболее широко используемым дистрибутивом Python для науки о данных и поставляется с предустановленными всеми часто используемыми библиотеками и инструментами. Помимо Jupyter, Anaconda также инкапсулирует некоторые библиотеки Python, в том числеNumPy,pandasиMatplotlib, и этоПолный список 1000+является исчерпывающим. Это позволяет вам запустить свой собственный автономный семинар по науке о данных, не управляя бесчисленными установочными пакетами и не беспокоясь о зависимостях и проблемах установки, связанных с ОС.

Установите Анаконду:

  1. скачатьПоследняя версия Anaconda, поддерживающая Python 3 (не Python 2.7).
  2. Установите Anaconda, следуя инструкциям на странице загрузки или в исполняемом файле.

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

pip3 install jupyter

Создайте свой первый блокнот

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

Запустить Юпитер

В Windows вы можете запустить Jupyter, добавив ярлык Anaconda в меню «Пуск», и он откроет новую вкладку в веб-браузере по умолчанию, как показано на снимке экрана ниже.

Jupyter control panel

Это панель Notebook Dashboard, предназначенная для управления Jupyter Notebooks. Думайте об этом как о стартовой панели для изучения, редактирования и создания блокнотов. Вы можете рассматривать его как стартовую площадку для изучения, редактирования и создания своих блокнотов.

Обратите внимание, что панель инструментов позволит вам получить доступ только к файлам и подпапкам, содержащимся в каталоге запуска Jupyter; однако каталог запускаможет быть изменено. Вы также можете ввестиjupyter notebookкоманда для запуска Dashboard (или Terminal в системах Unix) в любой системе; в этом случае текущий рабочий каталог будет каталогом запуска.

Внимательные читатели, возможно, заметили, что URL-адрес информационной панели выглядит так:http://localhost:8888/tree. Localhost — это не веб-сайт, а представитель вашегоместныйКонтент подается на машину (ваш собственный компьютер). Блокноты и информационные панели Jupyter являются веб-приложениями, и Jupyter запускает локальный сервер Python, обслуживая эти приложения в вашем веб-браузере, делая их принципиально независимыми от платформы и открывая доступ для более удобного обмена через веб-дверь.

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

New notebook menu

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

Что такое файл ipynb?

Полезно понять, что это за файл. Каждый.ipynbФайл представляет собой текстовый файл с именем вJSONФормат описывает содержимое вашей записной книжки. Каждая ячейка и ее содержимое, включая прикрепленные изображения, которые были преобразованы в текстовые строки, связаны с некоторымиметаданныеперечислены вместе. Вы можете отредактировать это самостоятельно — если знаете, что делаете! — выбрав «Правка > Редактировать метаданные записной книжки» в строке меню записной книжки.

Вы также можете выбрать из элементов управления на панели инструментовEditчтобы увидеть содержимое файла вашей записной книжки, но важно то, что вы можете это сделать; нет причин делать это, кроме любопытства, если вы действительно не знаете, что делаете.

интерфейс ноутбука

Поскольку перед вами открытый блокнот, его интерфейс не выглядит совершенно инородным, в конце концов, Jupyter — это всего лишь продвинутый текстовый процессор. Почему бы не взглянуть? Посмотрите на меню, чтобы узнать об этом, особенно найдите время, чтобы просмотреть палитру команд (это маленькая кнопка со значком клавиатуры (илиCtrl + Shift + P)) для прокрутки списка команд.

New Jupyter Notebook

Вы должны заметить два очень важных термина, которые могут быть совершенно новыми для вас:Клеткаиядро. Они являются ключом к пониманию Jupyter и отличию Jupyter от простого текстового процессора. К счастью, эти концепции нетрудно понять.

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

Клетка

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

  • кодовая единицаСодержит код, который должен быть выполнен в ядре, и отображает его вывод ниже.
  • Единица уценкиСодержит текст, отформатированный с помощью Markdown, и отображает его вывод во время выполнения.

Первая ячейка в новой записной книжке всегда является ячейкой кода. Давайте проверим это на классическом примере hello world. входитьprint('Hello World!')Чтобы перейти к ячейке, нажмите кнопку запуска на панели инструментов выше или нажмите Ctrl + Enter. Результат должен выглядеть так:

print('Hello World!')
Hello World!

Когда вы запускаете ячейку, ее вывод будет отображаться под ней, а метка слева от нее будет отображаться изIn [ ]статьIn [1]. Вывод модуля кода также является частью документации, поэтому вы можете увидеть его в этой статье. Вы всегда можете различить код и ячейки Markdown, потому что ячейки кода имеют метки слева, а ячейки Markdown — нет. Часть метки «In» является сокращением от «input», а номер метки указывает порядок, в котором ячейки выполняются в ядре — в этом случае ячейки выполняются первыми. Запустите ячейку еще раз, и метка изменится наIn[2], потому что в этот момент ячейка является второй ячейкой, работающей в ядре. Это делает очень полезным более глубокое погружение в ядро.

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

import time
time.sleep(3)

Этот модуль не производит вывода, но его выполнение занимает 3 секунды. Обратите внимание, что Jupyter меняет метку наIn[*]чтобы указать, что ячейка в настоящее время работает.

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

def say_hello(recipient):
    return 'Hello, {}!'.format(recipient)

say_hello('Tim')
'Hello, Tim!'

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

горячие клавиши

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

До сих пор мы видели, как использоватьCtrl + Enterдля запуска ячейки, но есть и многие другие. Сочетания клавиш — очень популярный аспект среды Jupyter, поскольку они облегчают рабочие процессы на базе ячеек. Многие из этих операций можно выполнять на активном устройстве в командном режиме.

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

  • Для переключения между режимами редактирования и командами используйтеEscиEnter.
  • В режиме командной строки:
    • использоватьUpиDownклавиши для прокрутки ячеек вверх и вниз.
    • в соответствии сAилиBВставляет новую ячейку выше или ниже активной ячейки.
    • Mпреобразует активную ячейку в ячейку Markdown.
    • YУстановите активную ячейку в качестве ячейки кода.
    • D + D(нажмите дваждыD) удалит активную ячейку.
    • ZОтменит удаление ячейки. * нажмите и удерживайтеShift, при нажатииUpилиDown, выберите сразу несколько ячеек.
      • выбрано несколько,Shift + MВаши выборы будут объединены.
  • Ctrl + Shift + -, в режиме редактирования разделит активную ячейку в месте курсора.
  • Вы также можете использовать на левой стороне вашей ячейки сShift + Clickвыбрать их.

Вы можете попробовать это на своем собственном ноутбуке. Как только вы попробуете, создайте новую ячейку Markdown, и мы научимся форматировать текст в наших блокнотах.

Markdown

Markdownэто легкий, простой в освоении язык разметки для форматирования обычного текста. Его синтаксис имеет прямое соответствие с HTML-разметкой, поэтому некоторый опыт здесь полезен, но определенно не обязателен. Помните, что этот пост был написан в блокноте Jupyter, поэтому весь описательный текст и изображения, которые вы видите, сделаны в Markdown. Давайте рассмотрим основы на простом примере.

# 这是一级标题。
## 这是一个二级标题。
这是一些构成段落的纯文本。
通过 **粗体** 和 __bold__ ,或 *斜体* 和 _italic_ 添加重点。

段落必须用空行隔开。

* 有时我们想要包含列表。
  * 可以缩进。

1. 列表也可以编号。
2. 有序列表。

[有可能包括超链接](https://www.example.com)

内联代码使用单个倒引号:`foo()`,代码块使用三个倒引号:

\```
\bar()
\```

或可由4个空格组成:

    foo()

最后,添加图片也很简单:![Alt](https://www.example.com/image.jpg)

При прикреплении изображения у вас есть три варианта:

  • Используйте URL-адрес изображения в Интернете.

  • Используйте локальный URL-адрес, поддерживаемый вашей записной книжкой, например, в том же репозитории git.

  • Добавьте вложения через «Правка > Вставить изображение»; изображение будет преобразовано в строку и сохранено в блокноте..ipynbдокумент.

  • Обратите внимание, что это сделает ваш.ipynbФайл больше!

Markdown имеет много деталей, особенно когда речь идет о гиперссылках, а также может включать простой HTML. Как только вы обнаружите, что выходите за рамки вышеперечисленных основ, вы можете обратиться к создателю Markdown Джону Груберу.Официальное руководство.

ядро

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

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

import numpy as np

def square(x):
    return x * x

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

x = np.random.randint(1, 10)
y = square(x)

print('%d squared is %d' % (x, y))
1 squared is 1

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

print('Is %d squared is %d?' % (x, y))
Is 1 squared is 1?

Ответ не вызывает сомнений. давай попробуем изменитьy.

y = 10

Если мы снова запустим, содержащийprintЯчейка оператора, как вы думаете, что произойдет?Is 4 squared is 10?!

Большую часть времени рабочий процесс в вашей записной книжке будет идти сверху вниз, но вполне нормально вернуться и внести некоторые изменения. В этом случае порядок выполнения левой части каждой ячейки, например.In [6], сообщит вам, если какая-либо из ваших ячеек имеет устаревший вывод. Если вы хотите что-то сбросить, в меню ядра есть несколько очень полезных опций:

  • Reboot: перезагружает ядро, очищая все определенные переменные.
  • Перезагрузка и очистка вывода: то же, что и выше, но также удалит вывод, отображаемый под ячейкой кода.
  • Перезапустите и запустите все: То же, что и выше, но также запускает все ваши юниты, от первого до последнего.

Если ваше ядро ​​всегда работает, но вы хотите его остановить, вы можете выбратьInteruptопции.

выбрать ядро

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

Существуют не только разные версии ядра Python, но и(более 100 языков), включая Java, C и даже Fortran. Особый интерес для специалистов по данным представляютRиJulia,а такжеimatlabиЯдро Calysto MATLAB.Ядро SoSОбеспечивает многоязычную поддержку в одном ноутбуке. Каждое ядро ​​имеет свои собственные инструкции по установке, но может потребовать выполнения некоторых команд на вашем компьютере.

Анализ случая

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

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

Назовите свой блокнот

Прежде чем вы начнете писать свой проект, вы можете дать ему осмысленное имя. Возможно, это немного сбивает с толку, вы не можете назвать или переименовать свою записную книжку из приложения «Записная книжка», для переименования вам нужно использовать панель управления или файловый браузер..ipynbдокумент. Мы вернемся к панели инструментов, чтобы переименовать файл, который вы создали ранее, он будет иметь имя файла записной книжки по умолчанию какUntitled.ipynb.

Вы не можете переименовать записную книжку во время ее работы, поэтому вам придется сначала закрыть ее. Самый простой способ сделать это — выбрать «Файл > Закрыть и остановить» в меню блокнота. Однако вы также можете выключить ядро, выбрав «Ядро > Завершение работы» в приложении блокнота или выбрав блокнот на панели инструментов и нажав «Завершение работы» (см. изображение ниже).

A running notebook

Затем вы можете выбрать свой блокнот и нажать «Переименовать» в элементах управления приборной панели.

A running notebook

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

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

настраивать

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

%matplotlib inline

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

sns.set(style="darkgrid")

мы импортируемpandasдля обработки наших данных,Matplotlibрисовать схемы,SeabornСделайте наши графики красивее. ИмпортироватьNumPyТакже очень часто, но в данном случае нам не нужно использовать его явно, хотя мы используем pandas. Первая строка не является командой Python, но использует что-то, называемое магией строк, чтобы указать Jupyter захватывать графики Matplotlib и отображать их в выходных данных ячейки; это одна из серии расширенных функций, выходящих за рамки этой статьи.

Давайте загрузим данные.

df = pd.read_csv('fortune500.csv')

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

сохранение и контрольная точка

Теперь, когда мы начали, лучше всего регулярно делать запасы. в соответствии сCtrl + SКлюч может сохранить вашу записную книжку, вызвав команду «сохранить и проверить», но что это за контрольная точка?

Всякий раз, когда вы создаете новую записную книжку, файл контрольной точки создается вместе с файлом записной книжки; он будет расположен в скрытом подкаталоге вашего места сохранения с именем.ipynb_checkpoints, также.ipynbдокумент. По умолчанию Jupyter автоматически сохраняет вашу записную книжку каждые 120 секунд без изменения основного файла записной книжки. Когда вы «сохраните и проверите», будут обновлены и записная книжка, и файл контрольной точки. Поэтому контрольные точки позволяют возобновить несохраненную работу в случае непредвиденного события. Вы можете вернуться к контрольной точке из меню через «Файл > Вернуться к контрольной точке».

Исследуйте наш набор данных

Мы делаем устойчивый прогресс! Наши заметки были надежно сохранены, и мы будемdfзагружается в наиболее часто используемую структуру данных pandas, которая называетсяDataFrame, который выглядит как таблица. Так как же будет выглядеть наш набор данных?

df.head()
Year Rank Company Revenue (in millions) Profit (in millions)
0 1955 1 General Motors 9823.5 806
1 1955 2 Exxon Mobil 5661.4 584.8
2 1955 3 U.S. Steel 3250.4 195.4
3 1955 4 General Electric 2959.1 212.6
4 1955 5 Esmark 2510.8 19.1
df.tail()
Year Rank Company Revenue (in millions) Profit (in millions)
25495 2005 496 Wm. Wrigley Jr. 3648.6 493
25496 2005 497 Peabody Energy 3631.6 175.4
25497 2005 498 Wendy's International 3630.4 57.8
25498 2005 499 Kindred Healthcare 3616.6 70.6
25499 2005 500 Cincinnati Financial 3614.0 584

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

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

df.columns = ['year', 'rank', 'company', 'revenue', 'profit']

Далее нам нужно изучить наш набор данных, он полный, читает ли pandas его, как ожидалось? Отсутствует значение?

len(df)
25500

Что ж, выглядит неплохо — 500 строк в год с 1955 по 2005 год.

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

df.dtypes
year         int64
rank         int64
company     object
revenue    float64
profit      object
dtype: object

Похоже, что-то не так со столбцом прибыли — мы хотим, чтобы он был похож на столбец дохода.float64. Это говорит о том, что он может содержать некоторые нецелочисленные значения, так что давайте посмотрим.

non_numberic_profits = df.profit.str.contains('[^0-9.-]')
df.loc[non_numberic_profits].head()
year rank company revenue profit
228 1955 229 Norton 135.0 N.A.
290 1955 291 Schlitz Brewing 100.0 N.A.
294 1955 295 Pacific Vegetable Oil 97.9 N.A.
296 1955 297 Liebmann Breweries 96.0 N.A.
352 1955 353 Minneapolis-Moline 77.4 N.A.

Как мы и догадались!Некоторые из этих значений представляют собой строки для представления отсутствующих данных. Есть ли другие пропущенные значения?

set(df.profit[non_numberic_profits])
{'N.A.'}

Это легко объяснить, но как мы должны это сделать? Это зависит от того, сколько значений отсутствует.

len(df.profit[non_numberic_profits])
369

Это лишь небольшая часть нашего набора данных, хотя и не совсем незначительная, поскольку она все еще составляет около 1,5%. Если строки, содержащие N.A., просто и равномерно распределены по годам, самое простое решение — удалить их. Итак, давайте посмотрим на дистрибутив.

bin_sizes, _, _ = plt.hist(df.year[non_numberic_profits], bins=range(1955, 2006))

Missing value distribution

При беглом взгляде мы можем увидеть, что год с наиболее недопустимыми значениями также меньше 25, а поскольку имеется 500 точек данных в год, удаление этих значений составляет менее 4% данных в худший год. На самом деле, за исключением всплеска 1990-х годов, в большинстве лет пропущенные значения пика составляли менее половины. Для наших целей, предположив, что это приемлемо, удалите строки.

df = df.loc[~non_numberic_profits]
df.profit = df.profit.apply(pd.to_numeric)

Давайте посмотрим, работает ли это.

len(df)
25131
df.dtypes
year         int64
rank         int64
company     object
revenue    float64
profit     float64
dtype: object

хорошо! Мы закончили настройку набора данных.

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

Графика с помощью matplotlib

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

group_by_year = df.loc[:, ['year', 'revenue', 'profit']].groupby('year')
avgs = group_by_year.mean()
x = avgs.index
y1 = avgs.profit

def plot(x, y, ax, title, y_label):
    ax.set_title(title)
    ax.set_ylabel(y_label)
    ax.plot(x, y)
    ax.margins(x=0, y=0)

Теперь приступим к рисованию.

fig, ax = plt.subplots()
plot(x, y1, ax, 'Increase in mean Fortune 500 company profits from 1955 to 2005', 'Profit (millions)')

Increase in mean Fortune 500 company profits from 1955 to 2005

Похоже на указатель, но на нем есть большие вмятины. они должны соответствоватьРецессия начала 1990-хиИнтернет пузырь. Очень интересно увидеть это в данных. Но почему прибыль восстанавливается до более высоких уровней после каждой рецессии?

Может быть, доходы могут рассказать нам больше.

y2 = avgs.revenue
fig, ax = plt.subplots()
plot(x, y2, ax, 'Increase in mean Fortune 500 company revenues from 1955 to 2005', 'Revenue (millions)')

Increase in mean Fortune 500 company revenues from 1955 to 2005

Это добавляет еще одну сторону истории. Доходы почти не пострадали, и бухгалтерия в финансовом отделе хорошо поработала.

с помощьюStack OverflowС помощью вышеизложенного мы можем наложить эти графики с +/- их стандартным смещением.

def plot_with_std(x, y, stds, ax, title, y_label):
    ax.fill_between(x, y - stds, y + stds, alpha=0.2)
    plot(x, y, ax, title, y_label)

fig, (ax1, ax2) = plt.subplots(ncols=2)
title = 'Increase in mean and std Fortune 500 company %s from 1955 to 2005'
stds1 = group_by_year.std().profit.as_matrix()
stds2 = group_by_year.std().revenue.as_matrix()
plot_with_std(x, y1.as_matrix(), stds1, ax1, title % 'profits', 'Profit (millions)')
plot_with_std(x, y2.as_matrix(), stds2, ax2, title % 'revenues', 'Revenue (millions)')
fig.set_size_inches(14, 4)
fig.tight_layout()

jupyter-notebook-tutorial_48_0

Это удивительно, стандартное отклонение огромно. Некоторые компании из списка Fortune 500 заработали миллиарды, в то время как другие потеряли миллиарды, и по мере того, как прибыль росла с годами, росли и риски. Может быть, у одних компаний дела обстоят лучше, чем у других; 10% лучших компаний более или менее прибыльны, чем 10% худших?

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

поделись своим блокнотом

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

Это,Есть некоторыеразвивающийсяКомпанияПредоставляет возможность запускать интерактивные блокноты Jupyter Notebook в облаке в Интернете.

прежде чем поделиться

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

  1. Нажмите «Ячейка» > «Все выходные данные» > «Очистить».
  2. Нажмите «Ядро > Перезагрузить и запустить все».
  3. Подождите, пока ваши единицы кода закончат выполнение, и убедитесь, что они выполняются должным образом.

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

экспортировать блокнот

Jupyter имеет встроенную поддержку экспорта в HTML и PDF, а также в несколько других форматов, которые вы можете найти вFile > Download Asнаходится под меню. Если вы хотите поделиться своими записными книжками с небольшой частной группой, эта функция, вероятно, вам нужна. Фактически, у исследователей во многих академических учреждениях есть какое-то общедоступное или внутреннее веб-пространство, и, поскольку вы можете экспортировать блокнот в файл HTML, блокноты Jupyter могут быть особенно удобным способом поделиться своей работой со своими коллегами.

Однако, если общий доступ к экспортированному файлу вас не устраивает, есть несколько более прямых и очень популярных способов совместного использования..ipynbКак получить файлы онлайн.

GitHub

По состоянию на начало 2018 года на GitHub насчитывается более 1,8 миллиона общедоступных блокнотов, и это, несомненно, самая популярная независимая платформа для обмена проектами Jupyter со всем миром. GitHub интегрировал.ipynbподдержку рендеринга файлов, которые вы можете хранить непосредственно в репозиториях и списках их веб-сайтов. Если вы еще не знаете,GitHubявляется платформой для размещения кодаGitСозданы репозитории для контроля версий и совместной работы. Вам необходимо создать учетную запись, чтобы использовать их сервис, в то время как стандартная учетная запись Github бесплатна.

Если у вас есть учетная запись GitHub, самый простой способ поделиться блокнотом на GitHub даже не требует Git. С 2008 года GitHub предоставляет сервис Gist для размещения и обмена фрагментами кода, каждый из которых имеет собственный репозиторий. Поделитесь блокнотом с помощью Gists:

  1. Войти и просматриватьgist.github.com.
  2. Открыть с помощью файлового редактора.ipynbфайл, выберите все и скопируйте JSON внутрь.
  3. Вставьте JSON заметки в суть.
  4. Назовите свой Gist, не забудьте добавить.iypnbсуффикс, иначе он не будет работать должным образом.
  5. Нажмите «Создать секретную суть» или «Создать общедоступную суть».

Это должно выглядеть так:

Creating a Gist

Если вы создадите общедоступный Gist, теперь вы можете поделиться его URL-адресом с кем угодно, и другие смогутфорк и клонТвоя работа.

Создание собственного репозитория Git и публикация его на GitHub выходит за рамки этого руководства, ноGitHub предоставляет множество руководствдля вашей справки.

Дополнительный трюк для тех, кто использует git, заключается в.gitignoreСоздан для Jupyter в.ipynb_checkpointsсодержаниедобавить исключение, потому что нам не нужно передавать файл контрольной точки в репозиторий.

NBViewer выполняет рендеринг каждую неделю с 2015 года.тысячи блокнотов, который стал самым популярным средством визуализации ноутбуков. Если у вас уже есть блокнот Jupyter где-то в сети, будь то GitHub или где-то еще, NBViewer может прочитать ваш блокнот и предоставить общий URL-адрес. Бесплатный сервис, предоставляемый в рамках Project Jupyter, который вы можете найти по адресуnbview.jupyter.orgНайдите сопутствующие услуги.

Первоначально разработанный до интеграции GitHub с Jupyter Notebook, NBViewer позволяет любому вводить URL-адрес, идентификатор Gist илиGitHub username/repo/filename, и отобразите его как веб-страницу. Идентификатор Gist — это уникальный номер в конце его URL-адреса, например, вhttps://gist.github.com/username/50896401c23e0bf417e89e1deСтрока после последней обратной косой черты в . если вы вошлиGitHub username/repo/filename, вы увидите минимальный файловый браузер, который позволяет вам получить доступ к репозиторию пользователя и его содержимому.

URL-адрес блокнота, отображаемый NBViewer, основан на URL-адресе отображаемого блокнота и не изменяется, поэтому вы можете поделиться им с кем угодно, пока исходный файл остается в сети — NBViewer не кэширует файлы надолго.

Эпилог

Начав с основ, мы освоили рабочий процесс Jupyter Notebook, углубились в более продвинутые функции IPython и, наконец, научились делиться своей работой с друзьями, коллегами и всем миром. Мы сделали все это из одной заметки!

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

Если вам нужно больше вдохновения для ваших собственных ноутбуков, Jupyter собрал (Забавная галерея Jupyter Notebook), вы можете найти это полезным, и вы найдетеДомашняя страница NbviewerСсылки на некоторые примеры действительно качественных ноутбуков. Также ознакомьтесь с нашимСписок советов по ноутбукам Jupyter.

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


Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из ИнтернетаНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллекти другие поля, если вы хотите видеть больше качественных переводов, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.