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.FloatingArraypandas.arrays.StringArrayилиpandas.arrays.ArrowStringArrayРасширенный массив, созданный, когда скалярный тип —
str, определяется поpd.options.mode.string_storage, если тип данных не задан явно.Во всех остальных случаях будут использоваться обычные правила определения типа NumPy.
Изменено в версии 1.0.0: Pandas определяет тип данных nullable-integer для целочисленных данных, строковый тип для строковых данных и тип данных nullable-boolean для логических данных.
Изменено в версии 1.2.0: Pandas теперь также определяет тип данных nullable-floating для данных с плавающей точкой.
- copy:bool, по умолчанию True
-
Нужно ли копировать данные, даже если это не требуется. В зависимости от типа data, создание нового массива может потребовать копирования данных, даже если
copy=False.
- Возвращает
-
- ExtensionArray
-
Новый созданный массив.
- Возбуждает
-
- ValueError
-
Когда data не одномерный.
См. также
numpy.array-
Построение массива NumPy.
Series-
Построение pandas Series.
Index-
Построение pandas Index.
arrays.PandasArray-
ExtensionArray, обертывающий массив NumPy.
Series.array-
Извлечь массив, хранящийся в серии.
Примечания
Если аргумент dtype опущен, pandas попытается определить лучший тип массива из значений в данных. По мере добавления новых типов массивов pandas и сторонними библиотеками, «лучший» тип массива может измениться. Рекомендуется указывать dtype, чтобы
получить правильный тип массива для данных
тип возвращаемого массива не менялся по мере добавления новых типов pandas и сторонними библиотеками
Кроме того, если важна внутренняя структура представления возвращаемого массива, рекомендуется указать dtype как конкретный объект, а не строковый псевдоним, или позволить ему быть определённым. Например, в будущей версии pandas или сторонней библиотеки может быть добавлен специализированный ExtensionArray для строковых данных. В этом случае следующее больше не вернёт
arrays.PandasArray, основанный на массиве NumPy.>>> pd.array(['a', 'b'], dtype=str) <PandasArray> ['a', 'b'] Length: 2, dtype: str32
Вместо этого это вернёт новый ExtensionArray, предназначенный для строковых данных. Если вам действительно нужно, чтобы новый массив базировался на массиве NumPy, укажите это в dtype.
>>> pd.array(['a', 'b'], dtype=np.dtype("<U1")) <PandasArray> ['a', 'b'] Length: 2, dtype: str32Наконец, в Pandas есть массивы, которые в основном перекрываются с NumPy
При передаче данных с типом
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> ['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.PandasArray.>>> pd.array([1 + 1j, 3 + 2j]) <PandasArray> [(1+1j), (3+2j)] Length: 2, dtype: complex128
Как упоминалось в разделе «Примечания», в будущем могут быть добавлены новые типы расширений (библиотеками pandas или сторонних разработчиков), что может привести к тому, что возвращаемое значение больше не будет
arrays.PandasArray. Укажите dtype как тип данных NumPy, если вам нужно гарантировать отсутствие будущих изменений в поведении.>>> pd.array([1, 2], dtype=np.dtype("int32")) <PandasArray> [1, 2] Length: 2, dtype: int32data должен быть одномерным. При неправильной размерности входных данных возникает исключение 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/1.5.0/reference/api/pandas.array.html