Spec-Zone.ru › pandas 0.25

pandas.array

pandas.array(data: Sequence[object], dtype: Union[str, numpy.dtype, pandas.core.dtypes.base.ExtensionDtype, NoneType] = None, copy: bool = True) → pandas.core.dtypes.generic.ABCExtensionArray [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, укажите это в type.

>>> 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

Чтобы использовать нулевые 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.25.0/reference/api/pandas.array.html

Spec-Zone.ru

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