Como converter Pandas Dataframe em NumPy Array

Asad Riaz 30 janeiro 2023
  1. to_numpy Método para converter Pandas DataFrame para NumPy Array
  2. Values() Método para converter Pandas DataFrame em NumPy Array
  3. Método To_records() para converter DataFrame em array de registros NumPy
Como converter Pandas Dataframe em NumPy Array

Aprenderemos o método to_numpy() para converter o pandas.Dataframe para o NumPy array, introduzido a partir do pandas v0.24.0 substituindo o método depreciado .values. Podemos definir to_numpy em Index, Series, e DataFrame objetos.

O método obsoleto DataFrame.values() tem um comportamento inconsistente; portanto, não é recomendado utilizar de acordo com a documentação API de Pandas. Entretanto, analisaremos um exemplo deste método se você estiver utilizando uma versão mais antiga de Pandas.

Também apresentaremos outra abordagem utilizando o método DataFrame.to_records() para converter o dado DataFrame para uma array de registros NumPy.

to_numpy Método para converter Pandas DataFrame para NumPy Array

O pandas.Dataframe é uma estrutura de dados tabular 2d com linhas e colunas. Esta estrutura de dados pode ser convertida em uma array NumPy utilizando o 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))

Resultado:

[[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'>

O método Pandas DataFrame to_numpy() converte o DataFrame em um array NumPy como mostrado acima.

Values() Método para converter Pandas DataFrame em NumPy Array

Poderíamos também utilizar o método Dataframe.values() da seguinte forma.

# 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))

Resultado:

[[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'>

Se quisermos incluir a coluna de índice na array NumPy convertida, precisamos aplicar reset_index() com 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))

Resultado:

[[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'>

Método To_records() para converter DataFrame em array de registros NumPy

Se você precisar dos dtypes, to_records() é a melhor opção a ser utilizada. Os dois to_numpy()e to_records()são quase os mesmos:

# 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'>

Artigo relacionado - Pandas DataFrame