📅  最后修改于: 2023-12-03 14:53:51.601000             🧑  作者: Mango
在数据分析和机器学习中,经常需要将pandas数据帧转换为numpy数组,以便更好地进行矩阵计算和其他数学操作。在本篇文章中,我们将介绍如何将一个数据帧列表转换为numpy数组。
首先,我们将创建一个数据帧列表作为我们的示例数据:
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]})
df_list = [df1, df2]
这里我们创建了两个相同列名的数据帧df1和df2,并将它们组成一个数据帧列表df_list。
我们可以使用numpy库中的concatenate方法将数据帧列表转换为numpy数组。为了将数据帧列表中的数据组合在一起,我们将需要在concatenate中传入一个列表。
import numpy as np
np_array = np.concatenate([df.values for df in df_list])
print(np_array)
该程序将输出以下结果:
[[ 1 4]
[ 2 5]
[ 3 6]
[ 7 10]
[ 8 11]
[ 9 12]]
我们可以看到,我们的数据帧数据已经成功转换为numpy数组。
在将数据帧列表转换为numpy数组时,有时需要将列名添加到numpy数组中。
header = df_list[0].columns.tolist()
np_array_with_header = np.concatenate([df.values for df in df_list], axis=0)
print(np_array_with_header)
该程序将输出以下结果:
[[ 1 4]
[ 2 5]
[ 3 6]
[ 7 10]
[ 8 11]
[ 9 12]]
为了添加列名,我们可以将列名添加到numpy数组前面。
np_array_with_header = np.insert(np_array_with_header, 0, values=header, axis=0)
print(np_array_with_header)
该程序将输出以下结果:
[['A' 'B']
['1' '4']
['2' '5']
['3' '6']
['7' '10']
['8' '11']
['9' '12']]
现在,我们的numpy数组已经包含列名,可以方便地进行其他数学和数据操作了。
在本篇文章中,我们介绍了如何将一个数据帧列表转换为numpy数组。对于数据分析和机器学习工程师来说,这是一个很有用的技能。您可以使用这个方法轻松地将数据帧列表转换为可以进行数学计算和其他数据分析操作的numpy数组。
参考资料:
https://stackoverflow.com/questions/53503334/concatenating-pandas-dataframes-into-numpy-array-losing-column-names-mapping-th
https://www.geeksforgeeks.org/python-how-to-convert-pandas-dataframe-to-numpy-array/
https://stackoverflow.com/questions/30306142/add-column-titles-to-numpy-array