Auparavant, la série Pandas ne pouvait pas gérer les types entiers contenant des valeurs manquantes.
pd.Series([1, 2, None], dtype=int)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
Lorsque des données numériques comprenant des valeurs manquantes sont lues sans spécifier le type, elles sont converties en type float64.
pd.Series([1, 2, None])
0 1.0
1 2.0
2 NaN
dtype: float64
Ce comportement est dû à la raison pour laquelle " numpy.nan
est une valeur de type flottant ", mais nous voulons gérer les valeurs manquantes et ne doivent pas nécessairement être numpy.nan
.
En réponse, Pandas v0.24.0 a ajouté Type de données entier Nullable. Il semble que ce problème ait été résolu en introduisant un nouveau pandas.NA
au lieu de numpy.nan
.
pd.Series([1, 2, None], dtype=pd.Int64Dtype())
0 1
1 2
2 <NA>
dtype: Int64
La valeur spécifiée pour dtype fonctionne de la même manière avec la chaîne «" Int64 "» au lieu de «pd.Int64Dtype ()». (Notez que «I» est en majuscule.)
Aussi dans la documentation
IntegerArray is currently experimental.
Telle qu'elle est écrite, cette fonction est encore au stade expérimental, vous devez donc être prudent lorsque vous l'utilisez.
Recommended Posts