10 фич для ускорения анализа данных в Python

МЕНЮ


Искусственный интеллект. Новости
Поиск
Регистрация на сайте
Сбор средств на аренду сервера для ai-news

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация




RSS


RSS новости

Новостная лента форума ailab.ru


Советы и рекомендации, особенно в программировании, могут быть очень полезны. Маленький шоткат, аддон или хак может сэкономить кучу времени и серьёзно увеличить производительность. Я собрала свои самые любимые и сделала из них эту статью. Какие-то из советов ниже уже известны многим, а какие-то появились совсем недавно. Так или иначе, я уверена, они точно не будут лишними, когда вы в очередной раз приступите к проекту по анализу данных.

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

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

Вот что вычисляется для заданного набора данных:

Статистика выводимая Pandas Profiling.

Установка

pip install pandas-profiling или conda install -c anaconda pandas-profiling

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

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

# импорт необходимых пакетов import pandas as pd import pandas_profiling

df = pd.read_csv('titanic/train.csv') pandas_profiling.ProfileReport(df)

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

Отчёт можно экспортировать в интерактивный HTML файл:

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

Кликните здесь, чтобы посмотреть вживую.

(папка с примерами — прим. перев.)



2. Делаем графики Pandas интерактивными

У класса DataFrame в Pandas есть встроенная функция .plot(). Однако визуализация создаваемая с её помощью, не является интерактивной, что хотелось бы усовершенствовать. С другой стороны, отказываться от простоты использования функции тоже не хочется. Что если бы мы могли сделать графики Pandas интерактивными, практически не внося изменений в код? Именно это возможно с библиотекой Cufflinks.

Cufflinks связывает силу plotly с гибкостью Pandas для построения интерактивных графиков. Давайте посмотрим, как можно установить библиотеку и заставить её работать с Pandas.

Установка

pip install plotly # Plotly должен быть установлен до Cufflinks pip install cufflinks

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

# импортируем Pandas  import pandas as pd #импортируем plotly и cufflinks в оффлайн режиме import cufflinks as cf

import plotly.offline cf.go_offline() cf.set_config_file(offline=False, world_readable=True)

Время увидеть всю мощь инструмента на данных о пассажирах Титаника.

df.iplot()

df.plot() в сравнении с df.iplot()

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

Здесь можно посмотреть больше примеров.



3. Немного магии

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

Список всех доступных «магических» функций

Магические команды бывают двух видов: line magics, которые начинаются с единственного символа % и работают на одной строке; и cell magics, которые ассоциированы с двойным %% и работают на нескольких строках.

Давайте рассмотрим те из них, которые полезны в общих задачах анализа данных:

  • %pastebin

%pastebin загружает код в Pastebin и возвращает урл. Pastebin — это сайт, где мы можем сохранить обычный текст, например фрагмент исходного кода, чтобы затем передать ссылку на него другим. Фактически, GitHub Gist сродни Pastebin, хотя и с контролем версий.

Рассмотрим такой скрипт:

# file.py def foo(x):     return x

Использование %pastebin в Jupyter Notebook создаст урл на Pastebin.

  • %matplotlib notebook

Команда %matplotlib inline используется для визуализации статических графиков matplotlib в Jupyter Notebook. Замените inline на notebook, чтобы получить масштабируемые и изменяемые диаграммы. Только убедитесь, что команда добавлена перед импортом matplotlib.

%matplotlib inline в сравнении с %matplotlib notebook
  • %run

Команда %run запускает скрипт внутри Jupyter Notebook.

%run file.py

  • %%writefile

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

  • %%latex

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


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

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


5. Вывод может быть красивым

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


6. Выделение заметок

Мы можем использовать алерты в наших Jupyter Notebooks, чтобы выделять что-то важное. Цвет будет зависеть от типа алерта. Просто добавьте любой или все из следующих кодов в ячейку, которую хотите выделить.

  • Синий алерт: информация

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

  • Жёлтый алерт: Предупреждение

<div class="alert alert-block alert-warning"> <b>Example:</b> Yellow Boxes are generally used to include additional examples or mathematical formulas. </div>

  • Зелёный алерт: Успех

<div class="alert alert-block alert-success"> Use green box only when necessary like to display links to related content. </div>

  • Красный алерт: Опасность

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


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

  • Во-вторых, так как мы всё ещё находимся в интерпретаторе, мы можем легко вызвать отладчик питона:

import pdb pdb.pm()

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

Оригинальный источник фичи.



9. Автоматическое (рас)комментирование кода

Ctrl/Cmd + / автоматически комментирует выделенные строки в ячейке. Повторное нажатие комбинации раскомментирует те же строки.

(Это, кстати, верно и для других редакторов типа Pycharm или Sublime Text — прим. перев.)


10. Отмена случайных действий

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

  • В случае, если вы удалили содержимое внутри ячейки, вы можете легко восстановить его, нажав CTRL/CMD+Z
  • Если вам нужно восстановить саму удаленную ячейку — ESC+Z или EDIT > Undo Delete Cells


Вывод

В этой статье я перечислила основные советы, которые помогают мне при работе с Python и Jupyter Notebooks. Надеюсь, они помогут и вам. Счастливого кодинга!


Источник: habr.com

Комментарии: