Spec-Zone.ru › pandas 0.25

Тип данных целых чисел с возможностью указания отсутствующих значений

Новая версия с 0.24.0.

Примечание

IntegerArray в настоящее время находится в стадии разработки. Его API или реализация могут быть изменены без предварительного предупреждения.

В Работа с отсутствующими данными мы видели, что pandas в основном использует NaN для представления отсутствующих данных. Поскольку NaN — это число с плавающей точкой, это приводит к тому, что массив целых чисел с любыми отсутствующими значениями преобразуется в число с плавающей точкой. В некоторых случаях это может не иметь большого значения. Но если ваш столбец целых чисел, например, идентификатор, преобразование в число с плавающей точкой может быть проблематичным. Некоторые целые числа даже не могут быть представлены в виде чисел с плавающей точкой.

Pandas может представлять данные целых чисел с возможными отсутствующими значениями с помощью arrays.IntegerArray. Это тип расширения, реализованный внутри pandas. Это не тип данных по умолчанию для целых чисел и не будет определяться автоматически; вы должны явно указать тип данных в array() или Series:

In [1]: arr = pd.array([1, 2, np.nan], dtype=pd.Int64Dtype())

In [2]: arr
Out[2]: 
<IntegerArray>
[1, 2, NaN]
Length: 3, dtype: Int64

Или строковый псевдоним "Int64" (обратите внимание на заглавную букву "I", чтобы отличать его от типа данных NumPy 'int64':

In [3]: pd.array([1, 2, np.nan], dtype="Int64")
Out[3]: 
<IntegerArray>
[1, 2, NaN]
Length: 3, dtype: Int64

Этот массив можно хранить в DataFrame или Series, как и любой массив NumPy.

In [4]: pd.Series(arr)
Out[4]: 
0      1
1      2
2    NaN
dtype: Int64

Вы также можете передать список-подобный объект в конструктор Series с указанием типа данных.

In [5]: s = pd.Series([1, 2, np.nan], dtype="Int64")

In [6]: s
Out[6]: 
0      1
1      2
2    NaN
dtype: Int64

По умолчанию (если вы не указываете dtype), используется NumPy, и в результате вы получите серию с типом float64:

In [7]: pd.Series([1, 2, np.nan])
Out[7]: 
0    1.0
1    2.0
2    NaN
dtype: float64

Операции с массивом целых чисел будут вести себя аналогично массивам NumPy. Отсутствующие значения будут передаваться, а данные будут приводиться к другому типу данных при необходимости.

# arithmetic
In [8]: s + 1
Out[8]: 
0      2
1      3
2    NaN
dtype: Int64

# comparison
In [9]: s == 1

© 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/user_guide/integer_na.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API