如何使用pandas将excel文件数据转换为numpy数组?

时间:2016-04-02 07:00:24

标签: python numpy pandas keras

我是keras库和Python的新手。我正在尝试使用pandas导入excel文件,并使用pandas的numpy.ndarray函数将其转换为as_matrix()。但它接缝错误地读取我的文件。就像我在Excel文件中有一个90x1049的数据集。但是当我试图将它转换为numpy数组时,它将我的数据读取为89x1049。我使用以下代码,但无效:

training_data_x = pd.read_excel("/home/workstation/ANN/new_input.xlsx")
X_train = training_data_x.as_matrix()

2 个答案:

答案 0 :(得分:3)

可能会发生的情况是您的Excel文件没有标题行,因此pandas.read_excel会消耗您的第一个数据行。

我尝试创建包含

的xlsx
1   2   3
2   3   4
3   4   5
4   5   6
5   6   7
6   7   8
7   8   9
8   9   10
9   10  11
10  11  12

阅读导致

In [3]: df = pandas.read_excel('test.xlsx')

In [4]: df
Out[4]: 
    1   2   3
0   2   3   4
1   3   4   5
2   4   5   6
3   5   6   7
4   6   7   8
5   7   8   9
6   8   9  10
7   9  10  11
8  10  11  12

可以看出,第一个数据行已被用作列的标签。

为避免将第一个数据行作为标题使用,请将headers=None传递给read_excel。有趣的是documentation之前没有提到过这种用法,但自从以来一直没有修复:

  

标题 int,整数列表,默认为0

     

用于解析的DataFrame的列标签的行(0索引)。如果传递了整数列表,那么这些行位置将合并为MultiIndex。如果没有标题,请使用“无”。

答案 1 :(得分:2)

如果您没有标题,请尝试以下操作:

training_data = pd.read_excel("/home/workstation/ANN/new_input.xlsx", header=None)

X_train = training_data_x.as_matrix()

另请参阅previous question的答案。