Cómo convertir Pandas DataFrame en un array de NumPy
-
El método
to_numpy
para convertir elDataFrame
en un arrayNumPy
-
to_records()
método para convertir elDataFrame
en el array de registrosNumPy
Aprenderemos el método to_numpy()
para convertir el array pandas.Dataframe
en NumPy
, introducido desde pandas v0.24.0 reemplazando el antiguo método .values
. Podemos definir to_numpy
en los objetos Index
, Series
y DataFrame
.
El antiguo DataFrame.values
tiene un comportamiento inconsistente, no se recomienda su uso según la documentación de la API de pandas. Sin embargo, veremos un ejemplo de este método en caso de que estés usando una versión más antigua.
Otro viejo método DataFrame.as_matrix()
está obsoleto ahora, ¡no lo uses!
También introduciremos otra aproximación usando el método DataFrame.to_records()
para convertir el DataFrame
dado en un array de registros NumPy
.
El método to_numpy
para convertir el DataFrame
en un array NumPy
pandas.Dataframe
es una estructura de datos tabular 2d con filas y columnas. Esta estructura de datos puede ser convertida en un array NumPy
usando el método to_numpy
:
# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.randint(0, 10, (6, 4)), columns=["a", "b", "c", "d"])
nmp = df.to_numpy()
print(nmp)
print(type(nmp))
Producción :
[[5 5 1 3]
[1 6 6 0]
[9 1 2 0]
[9 3 5 3]
[7 9 4 9]
[8 1 8 9]]
<class 'numpy.ndarray'>
Lo mismo se puede hacer usando el método Dataframe.values
de la siguiente manera:
# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.randint(0, 10, (6, 4)), columns=["a", "b", "c", "d"])
nmp = df.values
print(nmp)
print(type(nmp))
Producción :
[[8 8 5 0]
[1 7 7 5]
[0 2 4 2]
[6 8 0 7]
[6 4 5 1]
[1 8 4 7]]
<class 'numpy.ndarray'>
Si queremos incluir index
en el array NumPy
necesitamos aplicar reset_index()
con dataframe.values
:
# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.randint(0, 10, (6, 4)), columns=["a", "b", "c", "d"])
nmp = df.reset_index().values
print(nmp)
print(type(nmp))
Producción :
[[0 1 0 3 7]
[1 8 2 5 1]
[2 2 2 7 3]
[3 3 4 3 7]
[4 5 4 4 3]
[5 2 9 7 6]]
<class 'numpy.ndarray'>
to_records()
método para convertir el DataFrame
en el array de registros NumPy
Si necesitas los dtypes
, to_records()
es la mejor opción a usar. En cuanto al rendimiento, tanto to_numpy()
como to_records()
son casi iguales:
# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.randint(0, 10, (6, 4)), columns=["a", "b", "c", "d"])
nmp = df.to_records()
print(nmp)
print(type(nmp))
Resultado:
[(0, 0, 4, 6, 1)
(1, 3, 1, 7, 1)
(2, 9, 1, 6, 4)
(3, 1, 4, 6, 9)
(4, 9, 1, 3, 9)
(5, 2, 5, 7, 9)]
<class 'numpy.recarray'>
Artículo relacionado - Pandas DataFrame
- Cómo obtener las cabeceras de columna de Pandas DataFrame como una lista
- Cómo borrar la columna de Pandas DataFrame
- Cómo convertir la columna del DataFrame a Datetime en Pandas
- Cómo convertir un float en un entero en Pandas DataFrame
- Cómo clasificar Pandas DataFrame por los valores de una columna
- Cómo obtener el agregado de Pandas grupo por y suma