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__ : Базовый метод отображения для 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 ограничены одним измерением.
Они могут быть основаны на нуле, одном или нескольких массивах NumPy. Например,
pandas.Categorical— это массив расширения, основанный на двух массивах: один для кодов и один для категорий. Массив адресов IPv6 может быть основан на структурированном массиве NumPy с двумя полями: одно для нижних 64 бит и одно для верхних 64 бит. Или они могут быть основаны на другом типе хранения, например, списках Python. Pandas не делает предположений о том, как хранятся данные, только о том, что их можно преобразовать в массив NumPy. Интерфейс ExtensionArray не накладывает никаких правил на то, как хранятся эти данные. Однако в настоящее время данные, на которых он основан, не могут быть сохранены в атрибутах, называемых.valuesили._values, чтобы обеспечить полную совместимость с внутренними механизмами pandas. Но другие имена, такие как.data,._data,._items, … могут быть свободно использованы.Атрибуты
dtypeЭкземпляр ‘ExtensionDtype’. nbytesКоличество байтов, необходимое для хранения этого объекта в памяти. ndimМассивы расширения разрешается использовать только одномерными. shapeВозвращает кортеж размерностей массива. Методы
argsort([ascending, kind])Возвращает индексы, которые отсортируют этот массив. astype(dtype[, copy])Приведение к массиву NumPy с ‘dtype’. copy([deep])Возвращает копию массива. dropna()Возвращает ExtensionArray без значений NA. factorize([na_sentinel])Кодирование массива расширения как перечислимого типа. fillna([value, method, limit])Заполнение значений NA/NaN с использованием указанного метода. isna()Одномерный массив, указывающий, отсутствует ли каждое значение. repeat(repeats[, axis])Повторение элементов ExtensionArray. searchsorted(value[, side, sorter])Поиск индексов, куда следует вставить элементы для поддержания порядка. shift([periods, fill_value])Сдвиг значений на нужное количество позиций. take(indices[, allow_fill, fill_value])Извлечение элементов из массива. unique()Вычисление ExtensionArray уникальных значений.
© 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.24.2/reference/api/pandas.api.extensions.ExtensionArray.html