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