Как стать автором
Обновить

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

Время на прочтение 5 мин
Количество просмотров 21K
Автор оригинала: Parul Pandey

Источник

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


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. Надеюсь, они помогут и вам. Счастливого кодинга!

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
+14
Комментарии 6
Комментарии Комментарии 6

Публикации

Истории

Работа

Python разработчик
130 вакансий
Data Scientist
66 вакансий

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн