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().Если не указано, есть две возможности:
- Когда
dataявляетсяSeries,IndexилиExtensionArray, тип данныхdtypeбудет взят из данных. - В противном случае pandas попытается определить тип данных
dtypeиз данных.
Обратите внимание, что когда
dataявляется массивом NumPy,data.dtypeне используется для определения типа массива. Это связано с тем, что NumPy не может представлять все типы данных, которые могут храниться в массивах расширения.В настоящее время pandas будет определять тип данных расширения для последовательностей
Скалярный тип Тип массива pandas.Intervalpandas.arrays.IntervalArraypandas.Periodpandas.arrays.PeriodArraydatetime.datetimepandas.arrays.DatetimeArraydatetime.timedeltapandas.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для обеспечения- возврата правильного типа массива для данных
- неизменности возвращаемого типа массива по мере добавления новых типов расширения библиотеками 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
При передаче данных с типом
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.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.24.2/reference/api/pandas.array.html