Spec-Zone.ru › pandas 2

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.

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

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

Возвращает:
ExtensionArray

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

Возбуждает:
ValueError

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

См. также

numpy.array

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

Series

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

Index

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

arrays.NumpyExtensionArray

ExtensionArray, оборачивающий массив NumPy.

Series.array

Извлечение массива, хранящегося в Series.

Примечания

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

  1. возврат правильного типа массива для данных

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

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

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

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

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

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

  • arrays.DatetimeArray

  • arrays.TimedeltaArray

Когда передаются данные с типом данных datetime64[ns] или timedelta64[ns], pandas всегда будет возвращать DatetimeArray или TimedeltaArray, а не NumpyExtensionArray. Это сделано для симметрии с случаем данных с часовым поясом, который 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.NumpyExtensionArray.

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

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

>>> pd.array([1, 2], dtype=np.dtype("int32"))
<NumpyExtensionArray>
[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/2.2.2/reference/api/pandas.array.html

Spec-Zone.ru

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