pandas.array#

pandas.массив(данные, dtype=None, copy=True)[источник]#

Создать массив.

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

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

Когда данные является Index или Series, базовый массив будет извлечен из данные.

dtypestr, np.dtype или ExtensionDtype, опционально

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

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

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

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

Обратите внимание, что когда данные является массивом 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

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

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

copybool, по умолчанию True

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

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

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

Вызывает:
ValueError

Когда данные не является одномерным.

Смотрите также

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)

['a', 'b']
Length: 2, dtype: str32

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

>>> pd.array(['a', 'b'], dtype=np.dtype("))

['a', 'b']
Length: 2, dtype: str32

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

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

>>> pd.array(['2015', '2016'], dtype='datetime64[ns]')

['2015-01-01 00:00:00', '2016-01-01 00:00:00']
Length: 2, dtype: datetime64[ns]
>>> pd.array(["1h", "2h"], dtype='timedelta64[ns]')

['0 days 01:00:00', '0 days 02:00:00']
Length: 2, dtype: timedelta64[ns]

Примеры

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

>>> pd.array([1, 2])

[1, 2]
Length: 2, dtype: Int64
>>> pd.array([1, 2, np.nan])

[1, 2, ]
Length: 3, dtype: Int64
>>> pd.array([1.1, 2.2])

[1.1, 2.2]
Length: 2, dtype: Float64
>>> pd.array(["a", None, "c"])

['a', , 'c']
Length: 3, dtype: string
>>> with pd.option_context("string_storage", "pyarrow"):
...     arr = pd.array(["a", None, "c"])
...
>>> arr

['a', , 'c']
Length: 3, dtype: string
>>> pd.array([pd.Period('2000', freq="D"), pd.Period("2000", freq="D")])

['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])

[(1+1j), (3+2j)]
Length: 2, dtype: complex128

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

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

[1, 2]
Length: 2, dtype: int32

данные должен быть одномерным. ValueError возникает, когда входные данные имеют неправильную размерность.

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