15 крутых трюков Jupyter, которые сэкономят время при работе с данными. Обработка и анализ данных python.

Как специалисты по анализу данных мы используем Jupyter Notebook практически каждый день – от загрузки данных до создания и развертывания моделей с его помощью.

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

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

@data_analysis_ml – Обработка и анализ данных на python для Датасаентистов.

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

Начнём!

1. Магические команды

В Jupyter Notebook есть ” магические команды” – это специальные команды, которые не являются частью языка Python, но облегчают вам жизнь. Этим командам предшествует символ %.

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

Вот некоторые распространенные магические команды:

%run: Запустить скрипт Python в текущем ядре.

%load: Загрузить код из скрипта и запустить его в текущем ядре.

%who: Перечислить все переменные.

%timeit: Засечь время выполнения одной строки кода.

%debug: Запустить отладчик в точке исключения.

%matplotlib inline: Отображать графики в блокноте.

%load_ext: Загрузить расширение, например, расширение IPython.

%pwd: Вывести текущий рабочий каталог.

%ls: Показать все файлы в текущем каталоге.

Просмотр всех магических команд

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

15 крутых трюков Jupyter, которые сэкономят время при работе с данными. Обработка и анализ данных python.

Чтобы узнать больше о конкретной магической команде можно использовать оператор ?, например %run?.

2. Выполнение другого файла Jupyter

Вы можете использовать магические команды чтобы делать всякие интересные вещи. Например, для выполнения кода python из файлов .py или jupyter notebook из файла .ipynb.

Команда %run выполнит jupyter notebook и покажет вывод – это не то же самое, что импортировать модуль python.

Мы можем запустить notebook для двух гистограмм и получить следующий результат

%run ./two-histograms.ipynb
15 крутых трюков Jupyter, которые сэкономят время при работе с данными. Обработка и анализ данных python.

3. Вызвать документацию по методам или магическим командам

Вы можете получить подробную информацию о каждой магической команде, выделив ее и нажав Shift + Tab.

15 крутых трюков Jupyter, которые сэкономят время при работе с данными. Обработка и анализ данных python.

4. Добавление нескольких курсоров

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

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

Чтобы использовать несколько курсоров в Jupyter notebook можно удерживать клавишу Alt и щелкать в нужных местах. Это создаст курсор в каждом выбранном месте. Затем вы можете вносить правки как обычно, и изменения будут применены ко всем местам одновременно.

Windows: Удерживайте alt + щелчок левой кнопкой мыши и перетащите курсор.

Mac: Удерживайте option + щелчок левой кнопкой мыши и перетащите курсор.

Вы также можете использовать комбинацию клавиш Shift + Alt + стрелки вверх/вниз для выделения нескольких строк текста и создания курсора в начале каждой выделенной строки.

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

15 крутых трюков Jupyter, которые сэкономят время при работе с данными. Обработка и анализ данных python.

5. Вставка кода из другого внешнего скрипта python

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

# Before Running
%load ./hello_world.py
# After Running
# %load ./hello_world.py
if __name__ == "__main__":
 print("Hello World!")

Output
Hello World!

6. Выполнение команд CMD/Shell 

Вы приходится выходить из notebook чтобы поработать с командной строкой?

Вы можете запускать shell-команды в Jupyter notebook, используя префикс ! перед командой. Например, чтобы перечислить файлы в текущем каталоге, вы можете использовать команду ls:

!ls

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

!ls -l /path/to/directory

Вы также можете присвоить вывод команды переменной и использовать ее в своем коде. Что открывает перед вами обширные возможности.

Например:

files = !ls
print(files)

Это присвоит список файлов в текущем каталоге переменной files и выведет его на печать.

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

7. Установка уведомления о завершении программы

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

Windows

Мы можем легко настроить его в windows 10 с помощью модуля win10toast.

pip install win10toast

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

from win10toast import ToastNotifier
toaster = ToastNotifier()

#ваша программа

toaster.show_toast("Программа завершена",
                   "Ваши вычисления завершены",
                   duration=10)

Вы также можете настроить алерт на завершение программы.

import winsound

# поставить алерт 440HZ на 1 секунду (1000ms)
duration = 1000
freq = 440

winsound.Beep(freq, duration)

Mac и Linux

Чтобы установить сигнал о завершении программы в Jupyter notebook, вы можете использовать модуль os для воспроизведения звука с помощью команды afplay (на macOS) или команды aplay (на Linux).

Вот пример того, как это можно сделать:

import os

# запуск вашей программы
# сыграть звук по окончании программы
os.system("afplay /path/to/sound.mp3")  # macOS
# os.system("aplay /path/to/sound.wav")  # Linux

Вы можете заменить /path/to/sound.mp3 на путь к звуковому файлу, который вы хотите воспроизвести. Это может быть любой звуковой файл, который поддерживается командой afplay или aplay, например, MP3, WAV или AIFF.

Имейте в виду, что этот метод будет работать, только если команда afplay или aplay доступна на системе, где запущен Jupyter notebook.

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

import os

os.system('say "Ваша программа завершена"')

8. Измерить время выполнения функции

Чтобы измерить время выполнения функции в Jupyter notebook, можно использовать магическую команду %timeit. Эта команда выполнит функцию несколько раз и вернет среднее время выполнения. Это позволит засечь время выполнения функции sum и вернуть среднее время, затраченное на выполнение функции.

Вот пример использования %timeit:

%timeit sum(range(100))

Это засечет время выполнения функции sum и вернет среднее время, затраченное на выполнение функции.

15 крутых трюков Jupyter, которые сэкономят время при работе с данными. Обработка и анализ данных python.
%%timeit

total = 0
for i in range(1000):
    total += i
15 крутых трюков Jupyter, которые сэкономят время при работе с данными. Обработка и анализ данных python.

Если вам нужна более подробная информация о времени выполнения, вы можете использовать модуль time в Python. Вот пример того, как его использовать:

import time

start_time = time.time()

# измеряемый код
sum(range(100))

end_time = time.time()

elapsed_time = end_time - start_time
print(f'Время запуска: {elapsed_time:.2f} секунд')
15 крутых трюков Jupyter, которые сэкономят время при работе с данными. Обработка и анализ данных python.

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

9. Передача переменных между notebooks

В Jupyter notebooks команда %store magic позволяет передавать переменные между notebooks.

Вот пример того, как ее использовать:

# В первом notebook
var1 = 10
%store var1

# Во втором notebook
%store -r var1
print(var1)

# Теперь вы можете использовать переменную ‘var1’ во втором notebook, как если бы она была определена во втором notebook

Магическая команда %store имеет несколько вариантов:

  • %store var1: сохраняет переменную var1
  • %store -r var1: извлекает сохраненную переменную var1 и присваивает ее переменной с тем же именем в текущем notebook
  • %store -d var1: удаляет сохраненную переменную var1
  • %store -z: удаляет все сохраненные переменные.

Вы также можете сохранить несколько значений с помощью одной команды %store.

%store var1 var2

Обратите внимание, что команда %store magic  работает только в рамках одного сеанса Jupyter, поэтому вам нужно будет открыть noteboooks в том же сеансе, чтобы переменные были доступны.

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

15 крутых трюков Jupyter, которые сэкономят время при работе с данными. Обработка и анализ данных python.

10. Список всех комбинаций клавиш

Изучение комбинации клавиш сделает вас опытным пользователем и сэкономит массу времени. Список горяцих клавиш огромен и запомнить их можно только со временем, по ходу рабочего процесса. Вы можете легко проверить их в меню вверху: Help > Keyboard Shortcuts, или нажав клавишу H в командном режиме.

Ниже приведен список некоторых часто используемых сочетаний клавиш в Jupyter notebooks:

Enter: войти в режим редактирования для текущей ячейки

Esc: войти в командный режим для текущей ячейки

Shift + Enter: запуск текущей ячейки и переход к следующей ячейке

Ctrl + Enter: запустить текущую ячейку

Alt + Enter: запустить текущую ячейку и вставить новую ячейку ниже

Shift + Tab: показать документацию для текущей функции или объекта

Ctrl + S: сохранить текущий notebook

A: вставить новую ячейку выше текущей ячейки (в командном режиме)

B: вставить новую ячейку под текущей ячейкой (в командном режиме)

M: изменить текущую ячейку на ячейку Markdown (в командном режиме)

Y: изменить текущую ячейку на ячейку кода (в командном режиме)

D + D: удалить текущую ячейку (в командном режиме)

Z: отмена последнего удаления ячейки (в командном режиме)

X: вырезать выбранную ячейку (в командном режиме)

C: копирование выделенной ячейки (в командном режиме)

V: вставить выделенную ячейку (в командном режиме)

Ctrl + Shift + -: Разделит текущую ячейку на две, начиная с того места, где находится ваш курсор. (в командном режиме)

Esc + F: Поиск и замена кода, но не вывода. (в командном режиме)

Esc + O: Переключение вывода ячеек (в командном режиме).

Выделить несколько ячеек:

Shift + Вниз выделяет следующую ячейку в направлении вниз.

Shift + Вверх выбирает следующую ячейку в направлении вверх. (в командном режиме)

Shift + M: объединение нескольких выделенных ячеек. (в командном режиме)

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

Чтобы просмотреть список комбинаций клавиш в блокноте Jupyter, вы можете перейти в меню Help и выбрать пункт Keyboard Shortcuts. Откроется диалоговое окно со списком всех доступных комбинаций клавиш.

Также можно использовать магическую команду %shortcuts для просмотра списка сочетаний клавиш в области вывода текущей ячейки:

%shortcuts

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

11. Скрыть ненужный вывод

Когда вы создаете отчет из Jupyter Notebook, ненужные объекты в памяти или id объектов могут раздражать. Чтобы скрыть этот ненужный вывод в ячейке notebook, вы можете использовать символ ; в конце строки кода, тогда данная ячейка не будет выведена в отчет.

Например, рассмотрим следующий код:

15 крутых трюков Jupyter, которые сэкономят время при работе с данными. Обработка и анализ данных python.

Если вы не хотите вывод строки matplotlib, вы можете использовать символ ; в конце оператора plotting:

plt.plot(x,y);

15 крутых трюков Jupyter, которые сэкономят время при работе с данными. Обработка и анализ данных python.

12. Написание функций на других языках, кроме python

Если вы часто имеете дело с большим количеством обширных datasetов и скорости numpy недостаточно, то вы можете писать части кода на C и Fortran непосредственно внутри вашего кода на python.

Принцип заключается в том, что когда вы пишете функцию на cpython или fortain, ее можно скомпилировать в динамическую библиотеку и использовать как обёртку для python.

Написание программы на языке c в python

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

pip install Cython

Написание программы Fortran в Python

Для написания Fortran-функции нам понадобится другая библиотека под названием fortrain-magic. Вы можете легко установить ее с помощью новой ячейки,

!pip install fortran-magic

%load_ext fortranmagic

%%fortran subroutine compute_fortran(x, y, z)
real, intent(in) :: x(:), y(:)
real, intent(out) :: z(size(x, 1))
z = sin(x + y)
end subroutine compute_fortran

compute_fortran([1, 2, 3], [4, 5, 6])

13. Расширение количества столбцов и строк, отображаемых в выводе pandas

По умолчанию датафрейм panda может показывать только ограниченное количество строк и столбцов. Но мы можем изменить значение по умолчанию.

Существует несколько способов расширить количество строк и столбцов, отображаемых в датафрейме pandas в Jupyter notebook.

Вариант 1:

можно использовать параметры pd.options.display.max_rows и pd.options.display.max_columns.

Например, чтобы отобразить до 100 строк и 50 столбцов, вы можете использовать следующий код:

import pandas as pd

pd.options.display.max_rows = 100
pd.options.display.max_columns = 50

Вариант 2:

Вы также можете использовать функцию pd.set_option для установки этих опций. Например:

pd.set_option("display.max_rows", 100)
pd.set_option("display.max_columns", 50)

Эти параметры будут применяться ко всем датафреймам pandas, отображаемым в Jupyter Notebook.

Или вы можете использовать методы head и tail для отображения первых или последних нескольких строк датафрейма. Например:

df.head(20)  
df.tail(10)  

Вариант 3:

Можно использовать функцию display из модуля IPython.display для вывода датафрейма. Например:

from IPython.display import display

display(df, max_rows=100, max_columns=50)
Эта команда выведет DataFrame до 100 строк и 50 столбцов.

14. Извлечения ввода и вывода данных из ячеек

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

У меня такое случалось сотни раз.

Когда мы выполняем ячейку в jupyter notebook, она присваивает номер строки как ln:

15 крутых трюков Jupyter, которые сэкономят время при работе с данными. Обработка и анализ данных python.

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

Сходным образом мы получаем нечто называемое Out когда ячейка завершает выполнение.

15 крутых трюков Jupyter, которые сэкономят время при работе с данными. Обработка и анализ данных python.

Out – это словарь python, в котором хранятся все выводы ячеек. Мы можем получить доступ к выводам, используя номер выполнения в качестве ключа.

15. Экспортировать содержиме ячейки/Вывести содержимое внешнего скрипта

Наверняка вы сталкивались с ситуацией, когда вам нужно создать файл python из ячейки jupyter. Мы можем создать .py файл и скопипастить код. Но есть решение получше.

%%writefile – это магическая команда Jupyter Notebook, которая позволяет сохранить содержимое ячейки в виде файла Python. Например, если в ячейке находится следующий код:

%%writefile example.py
def add(a, b):
    return a + b
print(add(3, 4))

Затем вы можете запустить ячейку, и она создаст файл с именем example.py в том же каталоге, что и Jupyter Notebook, с содержимым ячейки, записанным в этот файл.

%pycat – это магическая команда Jupyter Notebook, которая отображает содержимое файла Python в ячейке notebook. Например, если в ячейке находится следующий код:

%pycat example.py

Команда отобразит содержимое файла example.py в ячейке. Это может быть полезно для быстрого просмотра содержимого файла Python без необходимости переключения на отдельный текстовый редактор или окно терминала.

Заключение
Вот и все, на этом мы подошли к концу этого посты. Надеюсь, вы нашли для себя что-то интересное и новое. Пишите комментарии, про какую тему вам бы хотелось почитать.

@ai_machinelearning_big_data - больше о машинном обучении и анализе данных
+1
3
+1
13
+1
2
+1
0
+1
2

Ответить

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