将Excel文件加载到numpy 2D数组中

h4cxqtbf  于 2023-03-24  发布在  其他
关注(0)|答案(2)|浏览(144)

有没有更简单的方法将excel文件直接加载到Numpy数组中?
我在numpy文档中看过numpy.genfromtxt自动加载函数,但它不能直接加载excel文件。

array = np.genfromtxt("Stats.xlsx")
ValueError: Some errors were detected !
Line #3 (got 2 columns instead of 1)
Line #5 (got 5 columns instead of 1)
......

现在我使用openpyxl.reader.excel读取excel文件,然后追加到numpy 2D数组。这似乎是低效的。理想情况下,我希望有excel文件直接加载到numpy 2D数组。

9gm1akwq

9gm1akwq1#

老实说,如果您要处理异构数据(电子表格可能包含),使用pandas.DataFrame比直接使用numpy更好。
虽然pandas在某种意义上只是numpy的一个 Package 器,但它非常非常好地处理了异构数据(以及大量其他东西......对于“类似电子表格”的数据,它是python世界的黄金标准)。
如果你决定走这条路,只需要使用pandas.read_excel

lc8prwob

lc8prwob2#

我们可以使用xlrd库来实现。我们不需要导入整个pandas。
下面是从Link获取的实用程序函数

def read_excel(excel_path, sheet_no = 0):
    book = xlrd.open_workbook(excel_path)
    sheet = book.sheet_by_index(sheet_no)
    return numpy.array([list(map(lambda x : x.value, sheet.row(i))) for i in range(sheet.nrows)])

希望这能帮助其他想要避免Pandas阅读excel的人。

对我来说,这个替代方案比pandas.read_excel(...).to_numpy()慢1秒,用于14k记录的excel

相关问题