Советы и рекомендации, особенно в среде программирования, очень полезны. Порой небольшой лайфхак может сильно сократить время работы кода. Незначительные ярлыки или надстройки могут реально повысить производительность работы. Итак, в этой статье я собрал некоторые из моих любимых советов и приёмов, которые я использовал в своей работе. Некоторые из них достаточно известны, а некоторые могут оказаться для вас новыми, но я уверен, что они пригодятся в следующий раз, когда вы будете анализировать данные.
![image](https://habrastorage.org/webt/mj/vi/xv/mjvixv76xqnu-hybsx3hpckcd8y.gif)
Профилирование — это процесс, который помогает нам понять данные, а Pandas Profiling — это пакет в Python, который помогает нам это сделать. Это простой и быстрый способ выполнить предварительный анализ данных Pandas Dataframe. Функции pandas df.describe () и df.info () обычно используются в качестве первого шага в процессе EDA. Тем не менее, они дают очень базовый обзор данных и мало помогают в случае больших наборов данных. Функция Pandas Profiling отображает гораздо больше информации с помощью одной строки кода и в интерактивном отчете HTML.
Для данного набора данных, Pandas вычисляет следующую статистику:
![image](https://habrastorage.org/webt/ax/vk/dr/axvkdrapy6gdhjk-l4phaullfdo.png)
Чтобы отобразить отчет в Jupyter, выполните:
Единственная строка кода — это всё, что вам нужно для отображения отчета о профилировании данных в блокноте Jupyter. Отчет довольно подробный, включая графики, где они необходимы.
![image](https://habrastorage.org/webt/g0/tj/mw/g0tjmwsm9smt8pdv3k7799kpfrc.gif)
Отчет также можно экспортировать в интерактивный файл HTML со следующим кодом.
![image](https://habrastorage.org/webt/et/uq/kk/etuqkkxyftjnlrze1toqee2svfo.gif)
Pandas имеет встроенную функцию .plot () как часть класса DataFrame. Однако визуализации, представленные с помощью этой функции, не являются интерактивными, что делает его менее привлекательным. Напротив, нельзя исключать простоту построения графиков с помощью функции pandas.DataFrame.plot (). Что если бы мы могли рисовать интерактивные графики, не внося существенных изменений в код? Ну, вы можете сделать это с помощью библиотеки Cufflinks.
Библиотека Cufflinks связывает силу plotly с гибкостью Pandas для удобного построения графиков и визуализации. Давайте теперь посмотрим, как мы можем установить библиотеку и заставить её работать.
Время увидеть магию, разворачивающуюся с набором данных Титаник.
![image](https://habrastorage.org/webt/tq/xt/nj/tqxtnjmulefedtjhvij1cyw79fo.gif)
![image](https://habrastorage.org/webt/sn/dm/2w/sndm2wxilia-9ztieryl9fvxbaw.png)
df.iplot() vs df.plot()
Визуализация снизу показывает статическую диаграмму, в то время как верхняя диаграмма является интерактивной и более подробной, и все это без каких-либо серьезных изменений в коде.
Больше примеров здесь.
Волшебные команды — это набор удобных функций в ноутбуках Jupyter, которые предназначены для решения некоторых распространенных проблем стандартного анализа данных. Вы можете увидеть все доступные магические средства с помощью %lsmagic.
![image](https://habrastorage.org/webt/rl/kg/f_/rlkgf_l8kt2fkp6xexvy0szg0hi.png)
Магические команды бывают двух видов: линейная магия, которая начинается с одного символа % и работает с одной строкой ввода, и клеточная магия, связанная с двойным префиксом %% и работающая с несколькими строками ввода. Магические функции могут вызываться без необходимости вводить начальный%, если установлено значение 1.
Давайте рассмотрим некоторые из них, которые могут быть полезны в общих задачах анализа данных:
% pastebin загружает код в Pastebin и возвращает URL. Pastebin — это онлайн-хостинг, где мы можем хранить простой текст, такой как фрагменты исходного кода, а затем URL-адрес может быть предоставлен другим пользователям. На самом деле, Github Gist также похож на pastebin, хотя и с контролем версий.
Рассмотрим скрипт python file.py:
Использование %pastebin в Jupyter Notebook генерирует URL-адрес pastebin.
![image](https://habrastorage.org/webt/pn/0s/4j/pn0s4jda5ezmlklyxmh4cznz9ts.png)
Встроенная функция % matplotlib используется для визуализации статических графиков matplotlib в блокноте Jupyter. Попробуйте заменить встроенную часть на ноутбук, чтобы легко получать масштабируемые и изменяемые размеры графиков. Убедитесь, что функция вызывается перед импортом библиотеки matplotlib.
![image](https://habrastorage.org/webt/kk/qx/ux/kkqxux6cvz7931veqg6zv0g-dgy.png)
Функция %run запускает скрипт python внутри ноутбука.
%% writefile записывает содержимое ячейки в файл. Здесь код будет записан в файл с именем foo.py и сохранен в текущем каталоге.
![image](https://habrastorage.org/webt/fh/p9/_n/fhp9_nzgrmuljd2fnzigo1dqoq8.png)
latex функция %% рендерит содержимое ячейки как LaTeX. Это полезно для написания математических формул и уравнений в ячейке.
![image](https://habrastorage.org/webt/xj/fv/al/xjfvalgksgyyac6ppjpdlxekg2e.png)
Интерактивный отладчик также является магической функцией, но я выделил ему отдельную категорию. Если во время выполнения ячейки кода вы получаете ошибку, введите % debug в новой строке и запустите его. Это открывает интерактивную среду отладки, которая приводит вас к позиции, где произошло исключение. Вы также можете проверить значения переменных, назначенных в программе, а также выполнить операции. Для выхода из отладчика нажмите q.
![image](https://habrastorage.org/webt/tp/j6/mg/tpj6mgqt6duvsefkzwge9jiyde8.gif)
Если вы хотите создать эстетически приятное представление ваших структур данных, pprint — это тот модуль перехода, который вам нужен. Это особенно полезно при печати словарей или данных JSON. Давайте рассмотрим пример, который использует print и pprint для отображения.
![image](https://habrastorage.org/webt/ii/fo/hb/iifohbkfn-crvt3h9p49akpfjh8.png)
Мы можем использовать поля предупреждений / заметок в ваших блокнотах Jupyter, чтобы выделить что-то важное или что-то, что должно выделиться. Цвет заметки зависит от типа указанного оповещения. Просто добавьте любой или все следующие коды в ячейку, которую нужно выделить.
![image](https://habrastorage.org/webt/w6/nv/hn/w6nvhnu7-nyalt0jhtwxb55cebi.png)
![image](https://habrastorage.org/webt/py/pk/ur/pypkursskijpxblztwpvn6twjuy.png)
![image](https://habrastorage.org/webt/4e/bf/dx/4ebfdxacef2vfzqj5cf_f6zwyum.png)
![image](https://habrastorage.org/webt/in/tx/u1/intxu1qjk0fy9eu74nsx83rifaq.png)
Рассмотрим ячейку Jupyter Notebook, содержащую следующие строки кода:
Это обычное свойство ячейки, которое печатает только последний вывод, а для остальных нам нужно добавить функцию print (). Что ж, получается, что мы можем напечатать все выходные данные, просто добавив следующий фрагмент в начале блокнота.
Теперь все выходные данные печатаются один за другим.
Чтобы вернуться к исходным настройкам:
Типичный способ запуска скрипта Python из командной строки: python hello.py. Однако, если вы добавите дополнительный -i при запуске того же скрипта, например, python -i hello.py, это даст больше преимуществ. Посмотрим как.
Во-первых, после достижения конца программы python не завершает работу интерпретатора. Таким образом, мы можем проверить значения переменных и правильность функций, определенных в нашей программе.
![image](https://habrastorage.org/webt/m-/ml/rc/m-mlrclxhxruhin5zx22tmgehoa.gif)
Во-вторых, мы можем легко вызвать отладчик Python, так как мы все еще в интерпретаторе:
Это приведет нас к месту, где произошло исключение, и мы сможем затем работать над кодом.
Источник читаем здесь.
Ctrl / Cmd + / автоматически комментирует выделенные строки в ячейке. Повторное нажатие на комбинацию раскомментирует ту же строку кода.
![image](https://habrastorage.org/webt/mj/vi/xv/mjvixv76xqnu-hybsx3hpckcd8y.gif)
Вы когда-нибудь случайно удаляли ячейку в блокноте Jupyter? Если да, то здесь есть ярлык, который может отменить действие удаления.
В случае, если вы удалили содержимое ячейки, вы можете легко восстановить его, нажав CTRL / CMD + Z
Если вам нужно восстановить всю удаленную ячейку, нажмите ESC + Z или EDIT> Undo Delete Cells
![image](https://habrastorage.org/webt/h8/pj/na/h8pjnahdxoa5cipj4kjjw3ytnvy.gif)
В этой статье я перечислил основные советы, которые я собрал, работая с файлами Python и Jupyter. Я уверен, что они будут полезны и для вас, и вы возьмете что-то полезное для себя из этой статьи.
Больше подобных статей можно читать в телеграм-канале Нейрон (@neurondata)
Happy Coding!
![image](https://habrastorage.org/webt/mj/vi/xv/mjvixv76xqnu-hybsx3hpckcd8y.gif)
1. Профилирование Pandas dataframe
Профилирование — это процесс, который помогает нам понять данные, а Pandas Profiling — это пакет в Python, который помогает нам это сделать. Это простой и быстрый способ выполнить предварительный анализ данных Pandas Dataframe. Функции pandas df.describe () и df.info () обычно используются в качестве первого шага в процессе EDA. Тем не менее, они дают очень базовый обзор данных и мало помогают в случае больших наборов данных. Функция Pandas Profiling отображает гораздо больше информации с помощью одной строки кода и в интерактивном отчете HTML.
Для данного набора данных, Pandas вычисляет следующую статистику:
![image](https://habrastorage.org/webt/ax/vk/dr/axvkdrapy6gdhjk-l4phaullfdo.png)
Установка
pip install pandas-profiling
or
conda install -c anaconda pandas-profiling
Использование
Чтобы отобразить отчет в Jupyter, выполните:
#Pandas-Profiling 2.0.0
df.profile_report()
Единственная строка кода — это всё, что вам нужно для отображения отчета о профилировании данных в блокноте Jupyter. Отчет довольно подробный, включая графики, где они необходимы.
![image](https://habrastorage.org/webt/g0/tj/mw/g0tjmwsm9smt8pdv3k7799kpfrc.gif)
Отчет также можно экспортировать в интерактивный файл HTML со следующим кодом.
profile = pandas_profiling.ProfileReport(df)
profile.to_file(outputfile="Titanic data profiling.html")
![image](https://habrastorage.org/webt/et/uq/kk/etuqkkxyftjnlrze1toqee2svfo.gif)
2. Обеспечение интерактивности с Pandas plots
Pandas имеет встроенную функцию .plot () как часть класса DataFrame. Однако визуализации, представленные с помощью этой функции, не являются интерактивными, что делает его менее привлекательным. Напротив, нельзя исключать простоту построения графиков с помощью функции pandas.DataFrame.plot (). Что если бы мы могли рисовать интерактивные графики, не внося существенных изменений в код? Ну, вы можете сделать это с помощью библиотеки Cufflinks.
Библиотека Cufflinks связывает силу plotly с гибкостью Pandas для удобного построения графиков и визуализации. Давайте теперь посмотрим, как мы можем установить библиотеку и заставить её работать.
Установка
pip install plotly # Plotly is a pre-requisite before installing cufflinks
pip install cufflinks
Использование
#importing Pandas
import pandas as pd
#importing plotly and cufflinks in offline mode
import cufflinks as cf
import plotly.offline
cf.go_offline()
cf.set_config_file(offline=False, world_readable=True)
Время увидеть магию, разворачивающуюся с набором данных Титаник.
![image](https://habrastorage.org/webt/tq/xt/nj/tqxtnjmulefedtjhvij1cyw79fo.gif)
![image](https://habrastorage.org/webt/sn/dm/2w/sndm2wxilia-9ztieryl9fvxbaw.png)
df.iplot() vs df.plot()
Визуализация снизу показывает статическую диаграмму, в то время как верхняя диаграмма является интерактивной и более подробной, и все это без каких-либо серьезных изменений в коде.
Больше примеров здесь.
3. Волшебные команды
Волшебные команды — это набор удобных функций в ноутбуках Jupyter, которые предназначены для решения некоторых распространенных проблем стандартного анализа данных. Вы можете увидеть все доступные магические средства с помощью %lsmagic.
![image](https://habrastorage.org/webt/rl/kg/f_/rlkgf_l8kt2fkp6xexvy0szg0hi.png)
Магические команды бывают двух видов: линейная магия, которая начинается с одного символа % и работает с одной строкой ввода, и клеточная магия, связанная с двойным префиксом %% и работающая с несколькими строками ввода. Магические функции могут вызываться без необходимости вводить начальный%, если установлено значение 1.
Давайте рассмотрим некоторые из них, которые могут быть полезны в общих задачах анализа данных:
- %pastebin.
% pastebin загружает код в Pastebin и возвращает URL. Pastebin — это онлайн-хостинг, где мы можем хранить простой текст, такой как фрагменты исходного кода, а затем URL-адрес может быть предоставлен другим пользователям. На самом деле, Github Gist также похож на pastebin, хотя и с контролем версий.
Рассмотрим скрипт python file.py:
#file.py
def foo(x):
return x
Использование %pastebin в Jupyter Notebook генерирует URL-адрес pastebin.
![image](https://habrastorage.org/webt/pn/0s/4j/pn0s4jda5ezmlklyxmh4cznz9ts.png)
- %matplotlib notebook
Встроенная функция % matplotlib используется для визуализации статических графиков matplotlib в блокноте Jupyter. Попробуйте заменить встроенную часть на ноутбук, чтобы легко получать масштабируемые и изменяемые размеры графиков. Убедитесь, что функция вызывается перед импортом библиотеки matplotlib.
![image](https://habrastorage.org/webt/kk/qx/ux/kkqxux6cvz7931veqg6zv0g-dgy.png)
- %run
Функция %run запускает скрипт python внутри ноутбука.
%run file.py
- %%writefile
%% writefile записывает содержимое ячейки в файл. Здесь код будет записан в файл с именем foo.py и сохранен в текущем каталоге.
![image](https://habrastorage.org/webt/fh/p9/_n/fhp9_nzgrmuljd2fnzigo1dqoq8.png)
- %%latex
latex функция %% рендерит содержимое ячейки как LaTeX. Это полезно для написания математических формул и уравнений в ячейке.
![image](https://habrastorage.org/webt/xj/fv/al/xjfvalgksgyyac6ppjpdlxekg2e.png)
4. Поиск и устранение ошибок
Интерактивный отладчик также является магической функцией, но я выделил ему отдельную категорию. Если во время выполнения ячейки кода вы получаете ошибку, введите % debug в новой строке и запустите его. Это открывает интерактивную среду отладки, которая приводит вас к позиции, где произошло исключение. Вы также можете проверить значения переменных, назначенных в программе, а также выполнить операции. Для выхода из отладчика нажмите q.
![image](https://habrastorage.org/webt/tp/j6/mg/tpj6mgqt6duvsefkzwge9jiyde8.gif)
5. Печать тоже может быть красивой
Если вы хотите создать эстетически приятное представление ваших структур данных, pprint — это тот модуль перехода, который вам нужен. Это особенно полезно при печати словарей или данных JSON. Давайте рассмотрим пример, который использует print и pprint для отображения.
![image](https://habrastorage.org/webt/ii/fo/hb/iifohbkfn-crvt3h9p49akpfjh8.png)
6. Выделение заметок
Мы можем использовать поля предупреждений / заметок в ваших блокнотах Jupyter, чтобы выделить что-то важное или что-то, что должно выделиться. Цвет заметки зависит от типа указанного оповещения. Просто добавьте любой или все следующие коды в ячейку, которую нужно выделить.
- Blue Alert Box: info
<div class="alert alert-block alert-info">
<b>Tip:</b> Use blue boxes (alert-info) for tips and notes.
If it’s a note, you don’t have to include the word “Note”.
</div>
![image](https://habrastorage.org/webt/w6/nv/hn/w6nvhnu7-nyalt0jhtwxb55cebi.png)
- Yellow Alert Box: Warning
<div class="alert alert-block alert-warning">
<b>Example:</b> Yellow Boxes are generally used to include additional examples or mathematical formulas.
</div>
![image](https://habrastorage.org/webt/py/pk/ur/pypkursskijpxblztwpvn6twjuy.png)
- Green Alert Box: Success
<div class="alert alert-block alert-success">
Use green box only when necessary like to display links to related content.
</div>
![image](https://habrastorage.org/webt/4e/bf/dx/4ebfdxacef2vfzqj5cf_f6zwyum.png)
- Red Alert Box: Danger
<div class="alert alert-block alert-danger">
It is good to avoid red boxes but can be used to alert users to not delete some important part of code etc.
</div>
![image](https://habrastorage.org/webt/in/tx/u1/intxu1qjk0fy9eu74nsx83rifaq.png)
7. Печать всех выходных данных ячейки
Рассмотрим ячейку Jupyter Notebook, содержащую следующие строки кода:
In [1]: 10+5
11+6
Out [1]: 17
Это обычное свойство ячейки, которое печатает только последний вывод, а для остальных нам нужно добавить функцию print (). Что ж, получается, что мы можем напечатать все выходные данные, просто добавив следующий фрагмент в начале блокнота.
from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all"
Теперь все выходные данные печатаются один за другим.
In [1]: 10+5
11+6
12+7
Out [1]: 15
Out [1]: 17
Out [1]: 19
Чтобы вернуться к исходным настройкам:
InteractiveShell.ast_node_interactivity = "last_expr"
8. Запуск скриптов Python с опцией ‘i’
Типичный способ запуска скрипта Python из командной строки: python hello.py. Однако, если вы добавите дополнительный -i при запуске того же скрипта, например, python -i hello.py, это даст больше преимуществ. Посмотрим как.
Во-первых, после достижения конца программы python не завершает работу интерпретатора. Таким образом, мы можем проверить значения переменных и правильность функций, определенных в нашей программе.
![image](https://habrastorage.org/webt/m-/ml/rc/m-mlrclxhxruhin5zx22tmgehoa.gif)
Во-вторых, мы можем легко вызвать отладчик Python, так как мы все еще в интерпретаторе:
import pdb
pdb.pm()
Это приведет нас к месту, где произошло исключение, и мы сможем затем работать над кодом.
My-Mac:Desktop parul$ python -i sum.py
Traceback (most recent call last):
File "sum.py", line 3, in <module>
sum = x+v
NameError: name 'v' is not defined
>>> import pdb
>>> pdb.pm()
> /Users/parul/Desktop/sum.py(3)<module>()
-> sum = x+v
(Pdb)
Источник читаем здесь.
9. Комментируем код автоматически
Ctrl / Cmd + / автоматически комментирует выделенные строки в ячейке. Повторное нажатие на комбинацию раскомментирует ту же строку кода.
![image](https://habrastorage.org/webt/mj/vi/xv/mjvixv76xqnu-hybsx3hpckcd8y.gif)
10. Удалить человеческое, восстановить божественное
Вы когда-нибудь случайно удаляли ячейку в блокноте Jupyter? Если да, то здесь есть ярлык, который может отменить действие удаления.
В случае, если вы удалили содержимое ячейки, вы можете легко восстановить его, нажав CTRL / CMD + Z
Если вам нужно восстановить всю удаленную ячейку, нажмите ESC + Z или EDIT> Undo Delete Cells
![image](https://habrastorage.org/webt/h8/pj/na/h8pjnahdxoa5cipj4kjjw3ytnvy.gif)
Заключение
В этой статье я перечислил основные советы, которые я собрал, работая с файлами Python и Jupyter. Я уверен, что они будут полезны и для вас, и вы возьмете что-то полезное для себя из этой статьи.
Больше подобных статей можно читать в телеграм-канале Нейрон (@neurondata)
Happy Coding!
Комментарии (5)
corridda
28.06.2019 00:05Статья хорошая, но:
10 фич для ускорения анализа данных в Python
habr.com/ru/post/457302
superstarstas306
28.06.2019 10:16Статья выходит на хабре утром, к вечеру ее уже передирают всякие похабные сайтики, через день статья снова выходит на хабре… classic
germn
Это уже было в Симпсонах:
habr.com/ru/post/457302
daleraliyorov сделайте, пожалуйста, поиск по переведённым источникам и/или по авторам оригиналов. Люди стараются, время на перевод тратят.
daleraliyorov
germn
Спасибо большое!