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().Если не указано, есть две возможности:
Когда data является
Series,IndexилиExtensionArray, dtype будет взят из данных.В противном случае pandas попытается определить dtype по данным.
Обратите внимание, что когда data является массивом NumPy,
data.dtypeне используется для определения типа массива. Это связано с тем, что NumPy не может представлять все типы данных, которые могут храниться в массивах расширения.В настоящее время pandas определяет тип данных расширения для последовательностей
Скалярный тип
Тип массива
pandas.arrays.StringArrayилиpandas.arrays.ArrowStringArrayМассив расширения, созданный, когда скалярный тип равен
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, чтобы обеспечить
возврат правильного типа массива для данных
возвращаемый тип массива не менялся по мере добавления новых типов расширения 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
Когда передаются данные с типом данных
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