Converter NumPy Array em Pandas DataFrame

Suraj Joshi 6 fevereiro 2021
Converter NumPy Array em Pandas DataFrame

Este tutorial explica como converter um array numérica para uma Pandas DataFrame utilizando o método pandas.DataFrame().

Passamos o array numérica para o método pandas.DataFrame() para gerar Pandas DataFrames a partir de arrays NumPy. Podemos também especificar nomes de colunas e índices de linhas para o DataFrame.

Converter NumPy Array em Pandas DataFrame utilizando o método pandas.DataFrame()

Passamos o array NumPy para o método pandas.DataFrame() para gerar a DataFrame a partir do array NumPy.

from numpy import random
import pandas as pd

random.seed(5)
random.randint(100, size=(3, 5))
data_array = random.randint(100, size=(4, 3))

print("NumPy Data Array is:")
print(data_array)

print("")

data_df = pd.DataFrame(data_array)
print("The DataFrame generated from the NumPy array is:")
print(data_df)

Resultado:

NumPy Data Array is:
[[27 44 77]
 [75 65 47]
 [30 84 86]
 [18  9 41]]

The DataFrame generated from the NumPy array is:
    0   1   2
0  27  44  77
1  75  65  47
2  30  84  86
3  18   9  41

Primeiro cria um array aleatório de tamanho (4,3) com 4 filas e 3 colunas. Passamos então o array como argumento para o método pandas.DataFrame(), que gera o DataFrame chamado data_df a partir do array. Por defeito, o método pandas.DataFrame() irá inserir nomes de colunas e índices de linhas por defeito.

Também podemos definir os nomes das colunas e índices de linha utilizando o parâmetro index e columns do método pandas.DataFrame().

from numpy import random
import pandas as pd

random.seed(5)
random.randint(100, size=(3, 5))
data_array = random.randint(100, size=(4, 3))
row_indices = ["Row_1", "Row_2", "Row_3", "Row_4"]
column_names = ["Column_1", "Column_2", "Column_3"]

print("NumPy Data Array is:")
print(data_array)

print("")

data_df = pd.DataFrame(data_array, index=row_indices, columns=column_names)
print("The DataFrame generated from the NumPy array is:")
print(data_df)

Resultado:

NumPy Data Array is:
[[27 44 77]
 [75 65 47]
 [30 84 86]
 [18  9 41]]

The DataFrame generated from the NumPy array is:
       Column_1  Column_2  Column_3
Row_1        27        44        77
Row_2        75        65        47
Row_3        30        84        86
Row_4        18         9        41

Aqui, definimos o valor de index para row_indices, uma lista contendo os índices de cada linha. Da mesma forma, atribuímos nomes de colunas definindo o valor de colunas à lista column_names, que contém o nome de cada coluna.

Em alguns casos, a próprio array NumPy pode conter índices de linhas e nomes de colunas. Em seguida, utilizamos o corte do array para extrair os dados, índices de linha e nomes de coluna do array.

import numpy as np
import pandas as pd

marks_array = np.array(
    [["", "Mathematics", "Economics"], ["Sunny", 25, 23], ["Alice", 23, 24]]
)

print("NumPy Data Array is:")
print(marks_array)

print("")

row_indices = marks_array[1:, 0]
column_names = marks_array[0, 1:]
data_df = pd.DataFrame(
    data=np.int_(marks_array[1:, 1:]), index=row_indices, columns=column_names
)

print("The DataFrame generated from the NumPy array is:")
print(data_df)

Resultado:

NumPy Data Array is:
[['' 'Mathematics' 'Economics']
 ['Sunny' '25' '23']
 ['Alice' '23' '24']]

The DataFrame generated from the NumPy array is:
       Mathematics  Economics
Sunny           25         23
Alice           23         24

Temos índices de linhas e nomes de colunas na próprio array NumPy. Seleccionamos todos os valores após a primeira linha e primeira coluna e fornecemos como argumento data à função pandas.DataFrame(), e seleccionamos todos os valores da primeira coluna da segunda linha e passamo-los como argumento index. Da mesma forma, seleccionamos todos os valores da primeira linha da segunda coluna e passamo-lo como argumento colunas para definir os nomes das colunas.

O numpy.array() converterá os valores inteiros em valores de string enquanto faz o array NumPy para assegurar o mesmo formato de dados do array. Utilizamos a função numpy.int_() para converter os valores dos dados de volta ao tipo integer.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artigo relacionado - Pandas DataFrame