pandas.array#
- pandas.массив(данные, dtype=None, copy=True)[источник]#
Создать массив.
- Параметры:
- данныеПоследовательность объектов
Скаляры внутри данные должны быть экземплярами скалярного типа для dtype. Ожидается, что данные представляет собой одномерный массив данных.
Когда данные является Index или Series, базовый массив будет извлечен из данные.
- dtypestr, np.dtype или ExtensionDtype, опционально
Тип данных для использования в массиве. Это может быть тип данных NumPy или тип расширения, зарегистрированный в pandas с помощью
pandas.api.extensions.register_extension_dtype().Если не указано, есть две возможности:
Когда данные является
Series,Index, илиExtensionArray, dtype будет взято из данных.В противном случае pandas попытается определить dtype из данных.
Обратите внимание, что когда данные является массивом NumPy,
data.dtypeявляется не используется для определения типа массива. Это связано с тем, что NumPy не может представить все типы данных, которые могут быть содержаться в расширенных массивах.В настоящее время pandas будет выводить тип данных расширения для последовательностей
Скалярный тип
Тип массива
pandas.arrays.StringArrayилиpandas.arrays.ArrowStringArrayExtensionArray, созданный, когда скалярный тип является
strопределяетсяpd.options.mode.string_storageесли тип данных не указан явно.Для всех остальных случаев будут использоваться стандартные правила вывода NumPy.
- copybool, по умолчанию True
Копировать ли данные, даже если не требуется. В зависимости от типа данные, создание нового массива может потребовать копирования данных, даже если
copy=False.
- Возвращает:
- ExtensionArray
Вновь созданный массив.
- Вызывает:
- ValueError
Когда данные не является одномерным.
Смотрите также
numpy.arrayСоздать массив NumPy.
SeriesСоздать pandas Series.
IndexСоздать pandas Index.
arrays.NumpyExtensionArrayExtensionArray, оборачивающий массив NumPy.
Series.arrayИзвлечение массива, хранящегося в Series.
Примечания
Пропуск dtype аргумент означает, что pandas попытается определить лучший тип массива из значений в данных. По мере добавления новых типов массивов pandas и сторонними библиотеками, «лучший» тип массива может измениться. Мы рекомендуем указывать dtype чтобы гарантировать, что
возвращается правильный тип массива для данных
тип возвращаемого массива не меняется при добавлении новых типов расширений pandas и сторонними библиотеками
Кроме того, если важна базовая структура памяти возвращаемого массива, мы рекомендуем указать dtype как конкретный объект, а не строковый псевдоним или разрешение его вывода. Например, будущая версия pandas или сторонняя библиотека может включать специальный ExtensionArray для строковых данных. В этом случае следующее больше не будет возвращать
arrays.NumpyExtensionArrayоснованный на массиве NumPy.>>> pd.array(['a', 'b'], dtype=str)
['a', 'b'] Length: 2, dtype: str32 Вместо этого вернётся новый ExtensionArray, предназначенный для строковых данных. Если вам действительно нужно, чтобы новый массив был основан на массиве NumPy, укажите это в dtype.
>>> pd.array(['a', 'b'], dtype=np.dtype("
)) ['a', 'b'] Length: 2, dtype: str32 Наконец, Pandas имеет массивы, которые в основном перекрываются с NumPy
Когда данные с
datetime64[ns]илиtimedelta64[ns]если dtype передан, pandas всегда вернётDatetimeArrayилиTimedeltaArrayа неNumpyExtensionArray. Это для симметрии со случаем данных с часовым поясом, который NumPy не поддерживает нативно.>>> pd.array(['2015', '2016'], dtype='datetime64[ns]')
['2015-01-01 00:00:00', '2016-01-01 00:00:00'] Length: 2, dtype: datetime64[ns] >>> pd.array(["1h", "2h"], dtype='timedelta64[ns]')
['0 days 01:00:00', '0 days 02:00:00'] Length: 2, dtype: timedelta64[ns] Примеры
Если тип данных не указан, pandas определит лучший тип данных из значений. См. описание dtype для типов, которые pandas определяет для.
>>> pd.array([1, 2])
[1, 2] Length: 2, dtype: Int64 >>> pd.array([1, 2, np.nan])
[1, 2, ] Length: 3, dtype: Int64>>> pd.array([1.1, 2.2])
[1.1, 2.2] Length: 2, dtype: Float64 >>> pd.array(["a", None, "c"])
['a', , 'c'] Length: 3, dtype: string>>> with pd.option_context("string_storage", "pyarrow"): ... arr = pd.array(["a", None, "c"]) ... >>> arr
['a', , 'c'] Length: 3, dtype: string>>> pd.array([pd.Period('2000', freq="D"), pd.Period("2000", freq="D")])
['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])
[(1+1j), (3+2j)] Length: 2, dtype: complex128 Как упомянуто в разделе «Примечания», новые типы расширений могут быть добавлены в будущем (pandas или сторонними библиотеками), что приведет к тому, что возвращаемое значение перестанет быть
arrays.NumpyExtensionArray. Укажите dtype как dtype NumPy, если вам нужно гарантировать отсутствие будущих изменений в поведении.>>> pd.array([1, 2], dtype=np.dtype("int32"))
[1, 2] Length: 2, dtype: int32 данные должен быть одномерным. ValueError возникает, когда входные данные имеют неправильную размерность.
>>> pd.array(1) Traceback (most recent call last): ... ValueError: Cannot pass scalar '1' to 'pandas.array'.