pandas.api.extensions.ExtensionArray#

класс pandas.api.extensions.ExtensionArray[источник]#

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

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(индексы, *[, allow_fill, fill_value])

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

tolist()

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

unique()

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

view([dtype])

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

_accumulate(name, *[, skipna])

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

_concat_same_type(to_concat)

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

_explode()

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

_formatter([boxed])

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

_from_factorized(значения, оригинал)

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

_from_sequence(скаляры, *[, dtype, copy])

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

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

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

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

Хук для hash_pandas_object.

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

Заполнение или обратное заполнение значений, используемое Series/DataFrame ffill и bfill.

_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

  • интерполировать

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

  • __repr__ : Репрезентация по умолчанию для ExtensionArray.

  • _formatter : Печатать скаляры внутри Series или DataFrame.

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

  • fillna

  • _pad_or_backfill

  • dropna

  • уникальный

  • 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 метод предоставляется для регистрации виртуальных подклассов.

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

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

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

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

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

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

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

Примеры

Пожалуйста, ознакомьтесь со следующим:

pandas-dev/pandas