python convert to datetime64
¿Diferencia entre el tipo de datos ''datetime64[ns]'' y ''<M8[ns]''? (2)
He creado un TimeSeries en pandas:
In [346]: from datetime import datetime
In [347]: dates = [datetime(2011, 1, 2), datetime(2011, 1, 5), datetime(2011, 1, 7),
.....: datetime(2011, 1, 8), datetime(2011, 1, 10), datetime(2011, 1, 12)]
In [348]: ts = Series(np.random.randn(6), index=dates)
In [349]: ts
Out[349]:
2011-01-02 0.690002
2011-01-05 1.001543
2011-01-07 -0.503087
2011-01-08 -0.622274
2011-01-10 -0.921169
2011-01-12 -0.726213
Sigo el ejemplo del libro ''Python for Data Analysis''.
En el siguiente párrafo, el autor verifica el tipo de índice:
In [353]: ts.index.dtype
Out[353]: dtype(''datetime64[ns]'')
Cuando hago exactamente la misma operación en la consola me sale:
ts.index.dtype
dtype(''<M8[ns]'')
¿Cuál es la diferencia entre los dos tipos ''datetime64[ns]''
y ''<M8[ns]''
?
¿Y por qué obtengo un tipo diferente?
Si esto genera errores en la ejecución de su código, la actualización de pandas y numpy sincrónicamente resuelve el conflicto en el tipo de datos datetime.
datetime64[ns]
es un dtype general, mientras que <M8[ns]
es un dtype específico. Los tipos de datos generales se asignan a tipos específicos, pero pueden ser diferentes de una instalación de NumPy a la siguiente.
En una máquina cuyo orden de bytes es little endian, no hay diferencia entre np.dtype(''datetime64[ns]'')
y np.dtype(''<M8[ns]'')
:
In [6]: np.dtype(''datetime64[ns]'') == np.dtype(''<M8[ns]'')
Out[6]: True
Sin embargo, en una máquina big endian, np.dtype(''datetime64[ns]'')
sería igual a np.dtype(''>M8[ns]'')
.
Por lo tanto, datetime64[ns]
asigna a <M8[ns]
o >M8[ns]
según la naturaleza de la máquina.
Hay muchos otros ejemplos similares de mapeo de dtypes generales a dtypes específicos: int64
mapea a <i8
o >i8
, e int
mapea a int32
o int64
dependiendo de la arquitectura de bits del sistema operativo y de cómo se compiló NumPy.
Aparentemente, la reproducción del dtype datetime64 ha cambiado desde el momento en que se escribió el libro para mostrar la naturaleza del dtype.