Spec-Zone.ru › pandas 0.25

pandas.api.extensions.ExtensionArray

class pandas.api.extensions.ExtensionArray [source]

Абстрактный базовый класс для пользовательских одномерных типов массивов.

pandas распознает экземпляры этого класса как правильные массивы с пользовательским типом и не будет пытаться преобразовать их в объекты. Они могут храниться непосредственно внутри DataFrame или Series.

Введено в версии 0.23.0.

Примечания

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

  • _from_sequence
  • _from_factorized
  • __getitem__
  • __len__
  • dtype
  • nbytes
  • isna
  • take
  • copy
  • _concat_same_type

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

  • __repr__ : Представление по умолчанию для ExtensionArray.
  • _formatter : Вывод скаляров внутри Series или DataFrame.

Некоторые методы требуют приведения ExtensionArray к ndarray объектов Python с self.astype(object), что может быть дорогостоящим. Если производительность имеет значение, настоятельно рекомендуется переопределить следующие методы:

  • fillna
  • dropna
  • unique
  • factorize / _values_for_factorize
  • argsort / _values_for_argsort
  • searchsorted

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

Можно реализовать методы для обработки массивов.

  • _reduce

Можно реализовать методы для обработки разбора из строк, которые будут использоваться в методах, таких как pandas.io.parsers.read_csv.

  • _from_sequence_of_strings

Этот класс не наследуется от ‘abc.ABCMeta’ по соображениям производительности. Методы и свойства, необходимые для интерфейса, вызывают pandas.errors.AbstractMethodError и не предоставляется метод register для регистрации виртуальных подклассов.

ExtensionArrays ограничены 1 измерением.

Они могут быть основаны ни на одном, одном или многих массивах NumPy. Например, pandas.Categorical — это массив расширения, основанный на двух массивах, один для кодов, а другой для категорий. Массив адресов IPv6 может быть основан на структурированном массиве NumPy с двумя полями, одно для нижних 64 битов, а другое для верхних 64 битов. Или они могут быть основаны на другом типе хранения, например, на списках Python. Pandas не делает никаких предположений о том, как хранятся данные, только что они могут быть преобразованы в массив NumPy. Интерфейс ExtensionArray не накладывает никаких правил на то, как эти данные хранятся. Однако в настоящее время данные для хранения не могут быть сохранены в атрибутах, называемых .values или ._values, чтобы обеспечить полную совместимость с внутренними структурами pandas. Но другие имена, такие как .data, ._data, ._items, … могут быть свободно использованы.

Если реализуется интерфейс NumPy __array_ufunc__, pandas ожидает, что

  1. Вы делегируете, вызывая NotImplemented, когда в inputs присутствуют какие-либо Series. Pandas извлечёт массивы и снова вызовет ufunc.
  2. Вы определите кортеж _HANDLED_TYPES в качестве атрибута класса. Pandas проверит это, чтобы определить, является ли ufunc допустимым для присутствующих типов.

См. Функции универсального массива NumPy для получения дополнительной информации.

Атрибуты

dtype Экземпляр ‘ExtensionDtype’.
nbytes Количество байтов, необходимых для хранения этого объекта в памяти.
ndim Массивы расширения разрешается использовать только одномерные.
shape Возвращает кортеж измерений массива.

Методы

argsort(self[, ascending, kind]) Возвращает индексы, которые отсортируют этот массив.
astype(self, dtype[, copy]) Преобразовать в массив NumPy с ‘dtype’.
copy(self) Возвращает копию массива.
dropna(self) Возвращает ExtensionArray без значений NA.
factorize(self, na_sentinel) Кодирует расширенный массив как перечисленный тип.
fillna(self[, value, method, limit]) Заполняет значения NA/NaN указанным методом.
isna(self) Одномерный массив, указывающий, отсутствует ли каждое значение.
ravel(self[, order]) Возвращает сплющенную (развернутую) представление массива.
repeat(self, repeats[, axis]) Повторяет элементы ExtensionArray.
searchsorted(self, value[, side, sorter]) Находит индексы, где элементы должны быть вставлены для поддержания порядка.
shift(self, periods, fill_value) Смещает значения на нужное количество позиций.
take(self, indices, allow_fill, fill_value) Извлекает элементы из массива.
unique(self) Вычисляет ExtensionArray уникальных значений.
_concat_same_type(to_concat) Конкатенация нескольких массивов.
_formatter(self, boxed) Функция форматирования для скалярных значений.
_formatting_values(self) (УСТАРЕЛО) Массив значений, которые будут выведены, например,
_from_factorized(values, original) Восстановление ExtensionArray после факторизации.
_from_sequence(scalars[, dtype, copy]) Создание нового ExtensionArray из последовательности скаляров.
_from_sequence_of_strings(strings[, dtype, copy]) Создание нового ExtensionArray из последовательности строк.
_ndarray_values Внутренний метод pandas для потерточной конвертации в NumPy ndarray.
_reduce(self, name[, skipna]) Возвращает скалярный результат выполнения операции редукции.
_values_for_argsort(self) Возвращает значения для сортировки.
_values_for_factorize(self) Возвращает массив и пропущенное значение, подходящее для факторизации.

© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.25.0/reference/api/pandas.api.extensions.ExtensionArray.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API