Вы не наткнетесь на них случайно - гарантированно!

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

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

Чтобы продолжить, вам понадобятся установленные Numpy и Pandas.

eval ()

Вы можете использовать функцию eval() для оценки выражения Python как строки. Вот параметры, о которых вам следует знать:

  • expr: str - Выражение, которое вы хотите оценить, должно содержать только выражения Python.
  • target: object - Целевой объект для назначения - DataFrame.
  • inplace: bool - указывает, следует ли изменить target. False по умолчанию, поэтому возвращается копия.

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

df = pd.DataFrame({
    'Algorithm': ['XGBoost', 'DNN'],
    'MSE': [63.3234, 51.8182]
})

Вот как это выглядит:

Теперь вы воспользуетесь функцией eval() для вычисления RMSE на основе MSE:

pd.eval('RMSE = df.MSE ** 0.5', target=df)

Вот как выглядит новый DataFrame:

Функция предоставляет альтернативный способ создания новых атрибутов или изменения существующих. Он не предлагает никаких революционных функций.

Подробнее о функции вы можете узнать здесь.

интерполировать ()

Функция interpolate() заполняет отсутствующие значения, используя указанный метод интерполяции. Вот параметры, о которых вам следует знать:

  • method: str - Метод интерполяции. linear по умолчанию. У него может быть много значений, поэтому проверьте документацию, чтобы найти подходящее.
  • axis: int or str - Ось для интерполяции.
  • limit: int - Необязательный параметр, используемый для указания максимального числа последовательных пропущенных значений для заполнения.
  • inplace: bool - указывает, следует ли изменить исходный DataFrame. False по умолчанию.

Давайте посмотрим, как работать с этой функцией. В следующем фрагменте кода создается серия Pandas, содержащая первые пять целых чисел с отсутствующим четвертым. Функции interpolate() должны автоматически определять, что 4 является правильным значением интерполяции:

s1 = pd.Series([1, 2, 3, np.nan, 5])
s1.interpolate()

Вот результаты:

Но что, если связь не линейная? Вот пример квадратичной связи между значениями списка:

s2 = pd.Series([1, 4, 9, np.nan, 25])
s2.interpolate(method='polynomial', order=2)

И вот результаты:

Работает как шарм! Вызов interpolate() по умолчанию в приведенном выше примере приведет к заполнению отсутствующего значения 17.0, так как это среднее значение для окружающих элементов. Это не то, что вам нужно.

Подробнее о функции вы можете узнать здесь.

факторизовать ()

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

  • values: sequence - Одномерная последовательность значений для кодирования.
  • sort: bool - указывает, нужно ли сортировать values. False по умолчанию.
  • na_sentinel: int - значение для отметки отсутствующих значений. Если None, пропущенные значения отбрасываются.

Посмотрим, как это работает на практике. Следующий фрагмент кода факторизует фиктивный список штатов США без сортировки:

codes, uniques = pd.factorize(
    values=['NY', 'CA', 'AL', 'AL', 'AR', 'CA']
)
print(codes)
print(uniques)

Вот результаты:

Функция factorize() возвращает кортеж, поэтому рекомендуется сохранять результаты в двух переменных.

Вы можете указать sort=True, если порядок имеет значение:

codes, uniques = pd.factorize(
    values=['NY', 'CA', 'AL', 'AL', 'AR', 'CA'], 
    sort=True
)
print(codes)
print(uniques)

Вот результаты:

Pandas автоматически понял, что значения следует отсортировать по алфавиту. Аккуратный.

Подробнее о функции вы можете узнать здесь.

Последние мысли

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

У вас есть любимая малоизвестная функция Pandas? Дайте мне знать в разделе комментариев ниже.

Понравилась статья? Станьте средним участником, чтобы продолжить обучение без ограничений. Если вы воспользуетесь следующей ссылкой, я получу часть вашего членского взноса без каких-либо дополнительных затрат с вашей стороны: https://medium.com/@radecicdario/membership

Оставайся на связи

  • Следуйте за мной на Medium, чтобы увидеть больше подобных историй
  • Подпишитесь на мою рассылку"
  • Подключиться к LinkedIn