Spec-Zone.ru › pandas 2

pandas.api.extensions.ExtensionArray

classpandas.api.extensions.ExtensionArray[source]

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

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

Атрибуты

dtype

Экземпляр ExtensionDtype.

nbytes

Количество байтов, необходимых для хранения этого объекта в памяти.

ndim

Массивы расширений могут быть только одномерными.

shape

Возвращает кортеж с размерами массива.

Методы

argsort(*[, ascending, kind, na_position])

Возвращает индексы, которые отсортировали бы этот массив.

astype(dtype[, copy])

Преобразует в массив NumPy или ExtensionArray с типом 'dtype'.

copy()

Возвращает копию массива.

dropna()

Возвращает ExtensionArray без значений NA.

duplicated([keep])

Возвращает логический ndarray, обозначающий дублирующиеся значения.

factorize([use_na_sentinel])

Кодирует массив расширений как перечислимый тип.

fillna([value, method, limit, copy])

Заполняет значения NA/NaN указанным методом.

equals(other)

Возвращает результат проверки эквивалентности другого массива этому массиву.

insert(loc, item)

Вставляет элемент в указанную позицию.

interpolate(*, method, axis, index, limit, ...)

См. DataFrame.interpolate.__doc__.

isin(values)

Поэлементная проверка принадлежности к множеству заданных значений.

isna()

Одномерный массив, указывающий, отсутствует ли каждое из значений.

ravel([order])

Возвращает представление этого массива в расплющенном виде.

repeat(repeats[, axis])

Повторяет элементы ExtensionArray.

searchsorted(value[, side, sorter])

Находит индексы, в которые следует вставить элементы, чтобы сохранить порядок.

shift([periods, fill_value])

Сдвигает значения на заданное количество позиций.

take(indices, *[, allow_fill, fill_value])

Извлекает элементы из массива.

tolist()

Возвращает список значений.

unique()

Вычисляет ExtensionArray с уникальными значениями.

view([dtype])

Возвращает представление массива.

_accumulate(name, *[, skipna])

Возвращает ExtensionArray, выполняющий операцию накопления.

_concat_same_type(to_concat)

Объединяет несколько массивов этого типа данных.

_explode()

Преобразует каждый элемент, похожий на список, в строку.

_formatter([boxed])

Функция форматирования скалярных значений.

_from_factorized(values, original)

Восстанавливает ExtensionArray после факторизации.

_from_sequence(scalars, *[, dtype, copy])

Создает новый ExtensionArray из последовательности скалярных значений.

_from_sequence_of_strings(strings, *[, ...])

Создает новый ExtensionArray из последовательности строк.

_hash_pandas_object(*, encoding, hash_key, ...)

Хук для hash_pandas_object.

_pad_or_backfill(*, method[, limit, ...])

Заполняет значения вперед или назад; используется методами ffill и bfill объектов Series/DataFrame.

_reduce(name, *[, skipna, keepdims])

Возвращает скалярный результат выполнения операции редукции.

_values_for_argsort()

Возвращает значения для сортировки.

_values_for_factorize()

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

Примечания

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

  • _from_sequence

  • _from_factorized

  • __getitem__

  • __len__

  • __eq__

  • dtype

  • nbytes

  • isna

  • take

  • copy

  • _concat_same_type

  • interpolate

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

  • __repr__ : Стандартное представление repr для ExtensionArray.

  • _formatter : Выводит скалярные значения внутри Series или DataFrame.

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

  • fillna

  • _pad_or_backfill

  • dropna

  • unique

  • factorize / _values_for_factorize

  • argsort, argmax, argmin / _values_for_argsort

  • searchsorted

  • map

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

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

  • _accumulate

  • _reduce

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

  • _from_sequence_of_strings

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

Массивы расширений ограничены одним измерением.

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

При реализации интерфейса __array_ufunc__ из NumPy pandas ожидает, что

  1. Вы отложите обработку, вернув NotImplemented, если в inputs присутствует хотя бы один Series. Pandas извлечет массивы и снова вызовет универсальную функцию.

  2. Вы определите кортеж _HANDLED_TYPES как атрибут класса. Pandas проверяет его, чтобы определить, допустима ли универсальная функция для присутствующих типов.

Подробнее см. Универсальные функции NumPy.

По умолчанию массивы расширений не хешируются. Неизменяемые подклассы могут переопределить это поведение.

Примеры

См. следующие материалы:

pandas-dev/pandas

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

Spec-Zone.ru

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