Spec-Zone.ru › pandas 0.24

pandas.array

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

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

Введено в версии 0.24.0.

Параметры:
data : Sequence of objects

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

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

dtype : str, np.dtype, or ExtensionDtype, optional

Тип данных для использования в массиве. Это может быть тип данных 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

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

copy : bool, default True

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

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

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

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

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

См. также

numpy.array
Построение массива NumPy.
Series
Построение pandas Series.
Index
Построение pandas Index.
arrays.PandasArray
ExtensionArray, оборачивающий массив NumPy.
Series.array
Извлечь массив, хранящийся в Series.

Примечания

Опускание аргумента 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, укажите это в типе данных.

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

Или используйте специализированный конструктор для ожидаемого массива и оберните его в PandasArray

>>> pd.array(np.array(['a', 'b'], 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>
['01:00:00', '02:00:00']
Length: 2, dtype: timedelta64[ns]

Примеры

Если тип данных не указан, data передаётся в numpy.array(), и возвращается arrays.PandasArray.

>>> pd.array([1, 2])
<PandasArray>
[1, 2]
Length: 2, dtype: int64

Или можно указать тип данных NumPy

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

Вы можете использовать строковый псевдоним для 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]

Поскольку опускание dtype передаёт данные в NumPy, смесь допустимых целых чисел и NA вернёт числовой массив NumPy с плавающей точкой.

>>> pd.array([1, 2, np.nan])
<PandasArray>
[1.0,  2.0, nan]
Length: 3, dtype: float64

Чтобы использовать nullable pandas.arrays.IntegerArray pandas, укажите тип данных:

>>> pd.array([1, 2, np.nan], dtype='Int64')
<IntegerArray>
[1, 2, NaN]
Length: 3, dtype: Int64

Pandas определит ExtensionArray для некоторых типов данных:

>>> pd.array([pd.Period('2000', freq="D"), pd.Period("2000", freq="D")])
<PeriodArray>
['2000-01-01', '2000-01-01']
Length: 2, dtype: period[D]

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

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

© 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.24.2/reference/api/pandas.array.html

Spec-Zone.ru

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