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 ожидает, что- Вы делегируете, вызывая
NotImplemented, когда вinputsприсутствуют какие-либо Series. Pandas извлечёт массивы и снова вызовет ufunc. - Вы определите кортеж
_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