将 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()
方法的 index
和 columns
参数来设置列名和行索引。
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 is a backend software engineer at Matrice.ai.
LinkedIn