Вы когда-нибудь создавали потрясающую сюжетную функцию, но хотели бы поделиться ею со своими коллегами или со всем миром? С пакетом pandex просто нажмите на GitHub, и любой сможет установить его в свою локальную установку pandas с помощью всего одной строки кода.

Этот график — отличный способ визуализировать отношения между строками и столбцами в кадре данных. Он был создан с использованием matplotlib круговых диаграмм для создания слоев сегментов и срезов. Это достаточно сложная функция, но теперь, когда она упакована как функция в общедоступном репозитории GitHub, ее могут легко использовать другие прямо из любого фрейма данных pandas.

Первый шаг — установить pandex:

$ pip install pandex

Пакет pandex загружает pandas и включает структуру расширения в пространстве имен .ext. Чтобы использовать функцию графика клина, вы должны сначала импортировать ее в локальную настройку панд:

import pandex as pd pd.ext.import_extension('github:connectedblue/pdext_collection/wedge_plot -> wedge_plot')

Вот и все! Теперь эту функцию можно использовать из каждого отдельного DataFrame созданного из pd. Давайте воспользуемся функцией для анализа трофеев, выигранных английскими футбольными клубами за эти годы:

import pandex as pd
df = pd.DataFrame({
    'League Cup': [8,5,2,5,6,4,4],
    'FA Cup': [7,12,13,8,6,8,2],
    'League Champions':[18,20,13,6,6,2,1],
    'UEFA Cup': [3,0,0,0,0,2,0],
    'European Cup':[6,3,0,1,0,0,2],
})
df.index=["Liverpool","Man United","Arsenal","Chelsea","Man City","Spurs", "Notts F"]

Фрейм данных df содержит данные о том, сколько раз соревнование выигрывали разные футбольные клубы. Поскольку оно было создано с использованием pandex, ранее импортированное расширение доступно для использования в любое время в пространстве имен df.ext:

fig=df.ext.wedge_plot()

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

Довольно аккуратно, да? Но мы можем сделать больше — эта функция имеет множество опций для управления каждым аспектом отображения графика клина. Давайте снова вызовем функцию с другим набором параметров:

fig = df.ext.wedge_plot(startangle=-40, 
        all_slices_percent = 0.30,alpha=.65, 
        hide_ring_label=False, slice_label_rotate=False,
        legend_fontstyle = 'italic', 
        legend_fontweight='normal',
        legend_units=['cups','cups','titles','cups','cups',],
        title='English Football Clubs\nAll-Time Trophy Wins',
        explode=0.02, title_y=0.85, title_x=0.2,
        circle_label='2019', circle_fontsize=23,
        legend_y_start=-0.6)

Это создает более приятный вид:

Совершенно ясно, без дальнейшего анализа, вы можете видеть, что «Ливерпуль» — величайшая футбольная команда.

Итак, как узнать, какие есть варианты для создания сюжета? Pandex использует встроенную функцию справки для отображения строки документа функций непосредственно из фрейма данных:

help(df.ext.wedge_plot)

Справка довольно длинная, поэтому я не буду воспроизводить ее здесь, но вы можете изменить цвета, размеры клиньев, форматы этикеток и многое другое.

Создание собственных функций pandex

Помимо использования чужих функций в анализе данных, почему бы не опубликовать некоторые из ваших собственных для использования другими?

Вы можете посмотреть на код клиновидного графика, чтобы получить представление о том, как подготовить свои собственные функции. Есть только несколько требований:

  • Функция должна иметь объект pandas DataFrame в качестве первого параметра.
  • Если используются какие-либо локальные импорты, они должны использовать относительную нотацию импорта, используемую в модулях (т.е. с префиксом точки)
  • Функция может существовать где угодно в общедоступном репозитории GitHub.

Вот и все — любые другие зависимости и функциональность пакета определяются как обычно.

Если вы создаете функцию с именем awesome_function, вы можете импортировать ее локально для целей тестирования во время разработки (при условии, что функция находится в файле в текущем каталоге):

import pandex as pd
pd.ext.import_extension('. -> awesome_function')
pd.ext.reinstall_extension('awesome_function')

Строка pd.ext.reinstall_extension необходима только в том случае, если вы изменили исходный файл функции с момента первого импорта.

Когда вы довольны своим творением, вы можете отправить коммит, и ваша функция может быть установлена ​​кем угодно следующим образом:

import pandex as pd
pd.ext.import_extension('github:yourusername/yourrepo/path/to/your/function -> awesome_function')

Вот и все!

Получайте удовольствие, создавая и делясь функциями pandex. Дайте мне знать в Твиттере @__chris_shaw__