Pandas e NumPy são pilares do ecossistema de ciência de dados em Python. Pandas se destaca na manipulação de dados com sua estrutura DataFrame, enquanto NumPy brilha em computação numérica eficiente com seus arrays. Frequentemente, você precisa transitar perfeitamente entre essas bibliotecas, convertendo um DataFrame Pandas em um array NumPy para análise ou processamento posterior. Este artigo detalha os métodos mais eficazes para essa conversão.
Sumário
Método to_numpy()
: A Abordagem Recomendada
O método to_numpy()
é a maneira mais direta e eficiente de converter um DataFrame Pandas em um array NumPy. Ele transforma diretamente os valores do DataFrame em um array NumPy, oferecendo flexibilidade na especificação do tipo de dados.
import pandas as pd
import numpy as np
# DataFrame de exemplo
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7.1, 8.2, 9.3]}
df = pd.DataFrame(data)
# Converter para array NumPy
numpy_array = df.to_numpy()
print("Tipo de dados padrão:n", numpy_array)
# Especificando o tipo de dados
numpy_array_float = df.to_numpy(dtype=np.float64)
print("nTipo de dados Float64:n", numpy_array_float)
numpy_array_int = df.to_numpy(dtype=np.int32)
print("nTipo de dados Int32 (trunca floats):n", numpy_array_int)
Observe como especificar dtype
permite um controle preciso sobre o tipo do array de saída. Se omitido, to_numpy()
infere inteligentemente o tipo mais apropriado a partir dos dados do DataFrame.
Atributo .values
: Uma Abordagem Tradicional
O atributo .values
também retorna uma representação de array NumPy dos dados do DataFrame. Embora funcionalmente semelhante a to_numpy()
, é considerado um método tradicional. to_numpy()
é preferido por sua clareza e natureza explícita.
import pandas as pd
import numpy as np
# DataFrame de exemplo
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data)
# Converter usando .values
numpy_array = df.values
print(numpy_array)
A saída é idêntica ao uso de to_numpy()
, mas to_numpy()
é a prática mais moderna e recomendada.
Método to_records()
: Criando Arrays Estruturados
Quando você precisar de um array NumPy com campos nomeados (semelhante a um array estruturado), use o método to_records()
. Ele converte o DataFrame em um array de registros NumPy onde cada coluna se torna um campo nomeado.
import pandas as pd
import numpy as np
# DataFrame de exemplo
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data)
# Converter para array de registros NumPy
numpy_record_array = df.to_records()
print(numpy_record_array)
print("nTipo de dados do array de registros:")
print(numpy_record_array.dtype)
Observe a inclusão do índice no array de registros. Este método é especialmente valioso quando a preservação dos nomes das colunas dentro da estrutura do array NumPy é crucial para análises posteriores.
Em conclusão, to_numpy()
é o método recomendado para conversões gerais de DataFrame para array NumPy. .values
fornece uma alternativa funcionalmente equivalente, enquanto to_records()
é mais adequado para arrays estruturados que necessitam de campos nomeados. A escolha ideal depende das necessidades específicas e da estrutura desejada do array NumPy resultante.