Вы не наткнетесь на них случайно - гарантированно!
Панды в представлении не нуждаются. Эта библиотека использовалась в экосистеме 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