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

image

1. Профилирование Pandas dataframe


Профилирование — это процесс, который помогает нам понять данные, а Pandas Profiling — это пакет в Python, который помогает нам это сделать. Это простой и быстрый способ выполнить предварительный анализ данных Pandas Dataframe. Функции pandas df.describe () и df.info () обычно используются в качестве первого шага в процессе EDA. Тем не менее, они дают очень базовый обзор данных и мало помогают в случае больших наборов данных. Функция Pandas Profiling отображает гораздо больше информации с помощью одной строки кода и в интерактивном отчете HTML.

Для данного набора данных, Pandas вычисляет следующую статистику:

image

Установка


pip install pandas-profiling
or
conda install -c anaconda pandas-profiling

Использование


Чтобы отобразить отчет в Jupyter, выполните:

#Pandas-Profiling 2.0.0
df.profile_report()

Единственная строка кода — это всё, что вам нужно для отображения отчета о профилировании данных в блокноте Jupyter. Отчет довольно подробный, включая графики, где они необходимы.

image

Отчет также можно экспортировать в интерактивный файл HTML со следующим кодом.

profile = pandas_profiling.ProfileReport(df)
profile.to_file(outputfile="Titanic data profiling.html")

image

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
image
df.iplot() vs df.plot()

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

Больше примеров здесь.

3. Волшебные команды


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

image

Магические команды бывают двух видов: линейная магия, которая начинается с одного символа % и работает с одной строкой ввода, и клеточная магия, связанная с двойным префиксом %% и работающая с несколькими строками ввода. Магические функции могут вызываться без необходимости вводить начальный%, если установлено значение 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

  • %matplotlib notebook

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

image

  • %run

Функция %run запускает скрипт python внутри ноутбука.

%run file.py

  • %%writefile

%% writefile записывает содержимое ячейки в файл. Здесь код будет записан в файл с именем foo.py и сохранен в текущем каталоге.

image

  • %%latex

latex функция %% рендерит содержимое ячейки как LaTeX. Это полезно для написания математических формул и уравнений в ячейке.

image

4. Поиск и устранение ошибок


Интерактивный отладчик также является магической функцией, но я выделил ему отдельную категорию. Если во время выполнения ячейки кода вы получаете ошибку, введите % debug в новой строке и запустите его. Это открывает интерактивную среду отладки, которая приводит вас к позиции, где произошло исключение. Вы также можете проверить значения переменных, назначенных в программе, а также выполнить операции. Для выхода из отладчика нажмите q.

image

5. Печать тоже может быть красивой


Если вы хотите создать эстетически приятное представление ваших структур данных, pprint — это тот модуль перехода, который вам нужен. Это особенно полезно при печати словарей или данных JSON. Давайте рассмотрим пример, который использует print и pprint для отображения.

image

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

  • 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
  • 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

  • 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

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

Во-вторых, мы можем легко вызвать отладчик 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

10. Удалить человеческое, восстановить божественное


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

В случае, если вы удалили содержимое ячейки, вы можете легко восстановить его, нажав CTRL / CMD + Z

Если вам нужно восстановить всю удаленную ячейку, нажмите ESC + Z или EDIT> Undo Delete Cells

image

Заключение


В этой статье я перечислил основные советы, которые я собрал, работая с файлами Python и Jupyter. Я уверен, что они будут полезны и для вас, и вы возьмете что-то полезное для себя из этой статьи.

Больше подобных статей можно читать в телеграм-канале Нейрон (@neurondata)

Happy Coding!

Комментарии (5)


  1. germn
    27.06.2019 22:00

    Это уже было в Симпсонах:
    habr.com/ru/post/457302

    daleraliyorov сделайте, пожалуйста, поиск по переведённым источникам и/или по авторам оригиналов. Люди стараются, время на перевод тратят.


    1. daleraliyorov
      27.06.2019 22:56
      +1

      …или по авторам оригиналов.
      Вуа ля: habr.com/ru/search/?q=Parul+Pandey#h.


      1. germn
        27.06.2019 23:09
        +1

        Спасибо большое!


  1. corridda
    28.06.2019 00:05

    Статья хорошая, но:
    10 фич для ускорения анализа данных в Python
    habr.com/ru/post/457302


  1. superstarstas306
    28.06.2019 10:16

    Статья выходит на хабре утром, к вечеру ее уже передирают всякие похабные сайтики, через день статья снова выходит на хабре… classic