Spec-Zone.ru › pandas 1

pandas.array

pandas.array(data, dtype=None, copy=True)[source]

Создайте массив.

Параметры
data:Последовательность объектов

Скаляры внутри data должны быть экземплярами скалярного типа для dtype. Ожидается, что data представляет собой одномерный массив данных.

Когда data является индексом или серией, базовый массив будет извлечён из data.

dtype:str, np.dtype или ExtensionDtype, необязательно

Тип данных для массива. Это может быть тип данных NumPy или расширенный тип, зарегистрированный в pandas с помощью pandas.api.extensions.register_extension_dtype().

Если не указано, есть две возможности:

  1. Когда data является Series, Index или ExtensionArray, dtype будет взят из данных.

  2. В противном случае pandas попытается определить dtype из данных.

Обратите внимание, что когда data является массивом NumPy, data.dtype не используется для определения типа массива. Это связано с тем, что NumPy не может представлять все типы данных, которые могут храниться в расширенных массивах.

В настоящее время pandas будет определять расширенный тип данных для последовательностей

Скалярный тип

Тип массива

pandas.Interval

pandas.arrays.IntervalArray

pandas.Period

pandas.arrays.PeriodArray

datetime.datetime

pandas.arrays.DatetimeArray

datetime.timedelta

pandas.arrays.TimedeltaArray

int

pandas.arrays.IntegerArray

float

pandas.arrays.FloatingArray

str

pandas.arrays.StringArray или pandas.arrays.ArrowStringArray

bool

pandas.arrays.BooleanArray

Расширенный массив, созданный, когда скалярный тип — str, определяется по pd.options.mode.string_storage, если тип данных не задан явно.

Во всех остальных случаях будут использоваться обычные правила определения типа NumPy.

Изменено в версии 1.0.0: Pandas определяет тип данных nullable-integer для целочисленных данных, строковый тип для строковых данных и тип данных nullable-boolean для логических данных.

Изменено в версии 1.2.0: Pandas теперь также определяет тип данных nullable-floating для данных с плавающей точкой.

copy:bool, по умолчанию True

Нужно ли копировать данные, даже если это не требуется. В зависимости от типа data, создание нового массива может потребовать копирования данных, даже если copy=False.

Возвращает
ExtensionArray

Новый созданный массив.

Возбуждает
ValueError

Когда data не одномерный.

См. также

numpy.array

Построение массива NumPy.

Series

Построение pandas Series.

Index

Построение pandas Index.

arrays.PandasArray

ExtensionArray, обертывающий массив NumPy.

Series.array

Извлечь массив, хранящийся в серии.

Примечания

Если аргумент dtype опущен, pandas попытается определить лучший тип массива из значений в данных. По мере добавления новых типов массивов pandas и сторонними библиотеками, «лучший» тип массива может измениться. Рекомендуется указывать dtype, чтобы

  1. получить правильный тип массива для данных

  2. тип возвращаемого массива не менялся по мере добавления новых типов pandas и сторонними библиотеками

Кроме того, если важна внутренняя структура представления возвращаемого массива, рекомендуется указать dtype как конкретный объект, а не строковый псевдоним, или позволить ему быть определённым. Например, в будущей версии pandas или сторонней библиотеки может быть добавлен специализированный ExtensionArray для строковых данных. В этом случае следующее больше не вернёт arrays.PandasArray, основанный на массиве NumPy.

>>> pd.array(['a', 'b'], dtype=str)
<PandasArray>
['a', 'b']
Length: 2, dtype: str32

Вместо этого это вернёт новый ExtensionArray, предназначенный для строковых данных. Если вам действительно нужно, чтобы новый массив базировался на массиве NumPy, укажите это в dtype.

>>> pd.array(['a', 'b'], dtype=np.dtype("<U1"))
<PandasArray>
['a', 'b']
Length: 2, dtype: str32

Наконец, в Pandas есть массивы, которые в основном перекрываются с NumPy

  • arrays.DatetimeArray

  • arrays.TimedeltaArray

При передаче данных с типом datetime64[ns] или timedelta64[ns], pandas всегда вернёт DatetimeArray или TimedeltaArray, а не PandasArray. Это делается для симметрии с случаем временных зон, которые NumPy не поддерживает напрямую.

>>> pd.array(['2015', '2016'], dtype='datetime64[ns]')
<DatetimeArray>
['2015-01-01 00:00:00', '2016-01-01 00:00:00']
Length: 2, dtype: datetime64[ns]
>>> pd.array(["1H", "2H"], dtype='timedelta64[ns]')
<TimedeltaArray>
['0 days 01:00:00', '0 days 02:00:00']
Length: 2, dtype: timedelta64[ns]

Примеры

Если тип данных не указан, pandas определит лучший тип данных из значений. Смотрите описание dtype для типов, которые pandas определяет.

>>> pd.array([1, 2])
<IntegerArray>
[1, 2]
Length: 2, dtype: Int64
>>> pd.array([1, 2, np.nan])
<IntegerArray>
[1, 2, <NA>]
Length: 3, dtype: Int64
>>> pd.array([1.1, 2.2])
<FloatingArray>
[1.1, 2.2]
Length: 2, dtype: Float64
>>> pd.array(["a", None, "c"])
<StringArray>
['a', <NA>, 'c']
Length: 3, dtype: string
>>> with pd.option_context("string_storage", "pyarrow"):
...     arr = pd.array(["a", None, "c"])
...
>>> arr
<ArrowStringArray>
['a', <NA>, 'c']
Length: 3, dtype: string
>>> pd.array([pd.Period('2000', freq="D"), pd.Period("2000", freq="D")])
<PeriodArray>
['2000-01-01', '2000-01-01']
Length: 2, dtype: period[D]

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

>>> pd.array(['a', 'b', 'a'], dtype='category')
['a', 'b', 'a']
Categories (2, object): ['a', 'b']

Или указать фактический тип данных

>>> pd.array(['a', 'b', 'a'],
...          dtype=pd.CategoricalDtype(['a', 'b', 'c'], ordered=True))
['a', 'b', 'a']
Categories (3, object): ['a' < 'b' < 'c']

Если pandas не определил специализированный расширенный тип, возвращается arrays.PandasArray.

>>> pd.array([1 + 1j, 3 + 2j])
<PandasArray>
[(1+1j), (3+2j)]
Length: 2, dtype: complex128

Как упоминалось в разделе «Примечания», в будущем могут быть добавлены новые типы расширений (библиотеками pandas или сторонних разработчиков), что может привести к тому, что возвращаемое значение больше не будет arrays.PandasArray. Укажите dtype как тип данных NumPy, если вам нужно гарантировать отсутствие будущих изменений в поведении.

>>> pd.array([1, 2], dtype=np.dtype("int32"))
<PandasArray>
[1, 2]
Length: 2, dtype: int32

data должен быть одномерным. При неправильной размерности входных данных возникает исключение ValueError.

>>> pd.array(1)
Traceback (most recent call last):
  ...
ValueError: Cannot pass scalar '1' to 'pandas.array'.

© 2008–2022, 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/1.5.0/reference/api/pandas.array.html

Spec-Zone.ru

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