pandas.api.extensions.ExtensionArray
- classpandas.api.extensions.ExtensionArray[source]
-
Абстрактный базовый класс для пользовательских одномерных типов массивов.
pandas распознает экземпляры этого класса как полноценные массивы с пользовательским типом и не будет пытаться преобразовывать их в объекты. Они могут храниться непосредственно внутри
DataFrameилиSeries.Атрибуты
Экземпляр ExtensionDtype.
Количество байтов, необходимых для хранения этого объекта в памяти.
Массивы расширений могут быть только одномерными.
Возвращает кортеж с размерами массива.
Методы
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])Возвращает скалярный результат выполнения операции редукции.
Возвращает значения для сортировки.
Возвращает массив и значение, обозначающее пропуск, подходящие для факторизации.
Примечания
Интерфейс включает следующие абстрактные методы, которые должны быть реализованы подклассами:
_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 ожидает, чтоВы отложите обработку, вернув
NotImplemented, если в inputs присутствует хотя бы один Series. Pandas извлечет массивы и снова вызовет универсальную функцию.Вы определите кортеж
_HANDLED_TYPESкак атрибут класса. Pandas проверяет его, чтобы определить, допустима ли универсальная функция для присутствующих типов.
Подробнее см. Универсальные функции NumPy.
По умолчанию массивы расширений не хешируются. Неизменяемые подклассы могут переопределить это поведение.
Примеры
См. следующие материалы:
© 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