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

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

https://t.me/ai_machinelearning_big_data


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


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

https://t.me/itchannels_telegram

источник


Report Page