将 NumPy 数组转换为 Pandas DataFrame

Suraj Joshi 2021年1月22日
将 NumPy 数组转换为 Pandas DataFrame

本教程介绍了如何使用 pandas.DataFrame() 方法将 numpy 数组转换为 Pandas DataFrame。

我们将 numpy 数组传递到 pandas.DataFrame() 方法中,从 NumPy 数组生成 Pandas DataFrame。我们还可以为 DataFrame 指定列名和行索引。

使用 pandas.DataFrame() 方法将 NumPy 数组转换为 Pandas DataFrame

我们将 NumPy 数组传递到 pandas.DataFrame() 方法中,从 NumPy 数组中生成 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))

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)

输出:

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

它首先创建一个大小为 (4,3) 的随机数组,有 4 行 3 列。然后我们将数组作为参数传递给 pandas.DataFrame() 方法,该方法从数组中生成名为 data_df 的 DataFrame。默认情况下,pandas.DataFrame() 方法会插入默认的列名和行索引。

我们也可以通过 pandas.DataFrame() 方法的 indexcolumns 参数来设置列名和行索引。

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)

输出:

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

在这里,我们将 index 的值设置为 row_indices,这是包含每行索引的列表。同样,我们通过将 columns 的值设置为 column_names 列表来分配列名,这个列表包含了每一列的名称。

在某些情况下,NumPy 数组本身可能包含行索引和列名。然后我们使用数组切片从数组中提取数据、行索引和列名。

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)

输出:

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

我们在 NumPy 数组中得到了行索引和列名。我们选择第一行和第一列之后的所有值,并将其作为 data 参数提供给 pandas.DataFrame() 函数,同时选择第二行的所有第一列值,并将其作为 index 参数传递。同理,我们从第二列中选取所有第一行的值,并将其作为 columns 参数传递,设置列名。

numpy.array() 在制作 NumPy 数组的同时,将整数值转换为字符串值,以保证数组的数据格式相同。我们使用 numpy.int_() 函数将数据值转换回整数类型。

作者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

相关文章 - Pandas DataFrame