翻译|使用教程|编辑:吉炜炜|2025-08-22 11:05:32.050|阅读 19 次
概述:在本篇教程中,您将学习借助强大的Aspose.Cells,如何仅用几行代码将 Excel 转换为 NumPy 数组。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
使用 Python 处理 Excel 数据非常常见。这通常涉及将数据从 Excel 转换为可高效操作的形式。将 Excel 数据转换为可分析的格式可能非常棘手。在本篇教程中,您将学习借助强大Excel处理控件Aspose.Cells for Python,如何仅用几行代码将 Excel 转换为 NumPy 数组。
NumPy(数值 Python)是一个开源 Python 库。它是 Python 数据科学和机器学习的支柱。NumPy 提供快速的数组操作和高效的数值计算。它可以与 Pandas、TensorFlow 和 scikit-learn 流畅协作。该库支持多维数组、矩阵、线性代数和傅里叶变换。数组使用连续内存,因此比 Python 列表更快。如此高的速度使 NumPy 成为科学计算和数据分析的核心工具。
Excel 广泛用于存储数据集,但它并未针对 Python 工作流程进行优化。传统的转换方法通常需要额外的库、多个步骤以及手动解析。Aspose.Cells 允许您将数据从Excel、TSV、CSV和JSON格式直接导出到 NumPy 数组。这将电子表格与 Python 的数值工具连接起来。
Aspose.Cells是面向 Python 开发人员的最佳 Excel 库。它允许读取、创建和操作电子表格,而无需依赖 Microsoft Excel。通过 .NET 的 Python 版本嵌入了 Aspose.Cells 的 .NET 版本并将其公开给 Python。Aspose.Cells 简化了 Excel 到 NumPy 的转换过程。它允许您将整个工作簿、工作表、范围、行、列,甚至列表对象直接导出到 NumPy ndarray 中。这意味着您可以轻松将原始 Excel 文件转换为干净、可立即使用的数据,用于分析或机器学习。
加入Aspose技术交流QQ群(1041253375),与更多小伙伴一起探讨提升开发技能。
您可以从 PyPI 安装它:
pip install aspose‑cells‑python安装完成后,将该库与 NumPy 一起导入:
import aspose.cells as cells import numpy as np
一个工作簿可能包含多个工作表。您可以一次性将整个 Excel 工作簿导出为 NumPy ndarray。当您想直接在 Python 中处理所有工作表的数据时,这非常方便。
按照以下步骤将 Excel 工作簿转换为 NumPy ndarray:
以下是导出示例工作簿的简化 Python 脚本:
import aspose.cells as cells import numpy as np # load workbook workbook = cells.Workbook("sample_data.xlsx") sheets = workbook.worksheets # prepare an empty list to hold sheet data sheets_data = [] # loop through worksheets for sheet in sheets: # sheet = workbook.worksheets.get(sheet_index) sheet_cells = sheet.cells max_row = sheet_cells.max_data_row + 1 # number of populated rows max_col = sheet_cells.max_data_column + 1 # number of populated columns sheet_rows = [] for r in range(max_row): row_values = [] for c in range(max_col): cell = sheet_cells.check_cell(r, c) row_values.append(cell.value if cell else "") sheet_rows.append(row_values) sheets_data.append(sheet_rows) # convert to ndarray with dtype=object to preserve strings excel_array = np.asarray(sheets_data, dtype=object) print(excel_array)
如何将 Excel 工作簿转换为 NumPy
此脚本将所有空白单元格替换为空字符串,并将所有工作表合并为一个 NumPy 数组。最终的 excel_array 是三维的:第一层代表工作表,第二层代表行,第三层代表列。
[[['City', 'Region', 'Store'], ['Chicago', 'Central', '3055'], ['New York', 'East', '3036'], ['Detroit', 'Central', '3074']], [['City2', 'Region2', 'Store3'], ['Seattle', 'West', '3000'], ['philadelph', 'East', '3082'], ['Detroit', 'Central', '3074']], [['City3', 'Region3', 'Store3'], ['Seattle', 'West', '3166'], ['New York', 'East', '3090'], ['Chicago', 'Central', '3055']]]
有时,您可能希望使用单个工作表而不是整个工作簿。您可以按照以下步骤直接提取一个工作表的单元格值并将其转换为 NumPy ndarray:
以下是导出单个工作表的 Python 脚本:
import aspose.cells as cells import numpy as np # load workbook workbook = cells.Workbook("sample_data.xlsx") # access the first worksheet sheet = workbook.worksheets[0] # get max rows and columns with data max_row = sheet.cells.max_data_row + 1 max_col = sheet.cells.max_data_column + 1 # extract data rows = [] for r in range(max_row): row_values = [] for c in range(max_col): cell = sheet.cells.check_cell(r, c) row_values.append(cell.value if cell else "") rows.append(row_values) # convert to numpy ndarray worksheet_array = np.asarray(rows, dtype=object) print(worksheet_array)这将创建一个 2D ndarray,其中行映射到 Excel 行,列映射到 Excel 列。
[['City' 'Region' 'Store'] ['Chicago' 'Central' '3055'] ['New York' 'East' '3036'] ['Detroit' 'Central' '3074']]
在某些情况下,您只需要特定范围的单元格。Aspose.Cells 允许您定义一个范围并将其直接导出到 NumPy ndarray。
请按照以下步骤操作:
以下代码示例显示如何将一系列单元格从 Excel 转换为 NumPy ndarray:
import aspose.cells as cells import numpy as np # load workbook workbook = cells.Workbook("sample_data.xlsx") # select first worksheet sheet = workbook.worksheets.get(0) # define a range (B1 to C3) cell_range = sheet.cells.create_range("B1", "C3") # extract data from range range_data = [] for r in range(cell_range.row_count): row_values = [] for c in range(cell_range.column_count): cell = sheet.cells.check_cell(r, c) row_values.append(cell.value if cell else "") range_data.append(row_values) # convert to numpy ndarray range_array = np.asarray(range_data, dtype=object) print(range_array)如果选定范围覆盖两列三行,则生成的数组将为 3×2,例如:
[['City' 'Region'] ['Chicago' 'Central'] ['New York' 'East']]
Excel 表格是包含标题和行的结构化数据区域。在 Aspose.Cells 中,它以 ListObject 的形式表示。您可以轻松地将 Excel 表格的内容导出到 NumPy ndarray 中,以便在 Python 中进一步处理。
以下代码示例显示如何将 Excel 表(ListObject)导出到 NumPy:
import aspose.cells as cells import numpy as np # Load Excel file workbook = cells.Workbook("sample_data.xlsx") sheet = workbook.worksheets.get(0) # Create a table covering A1:C4 with headers index = sheet.list_objects.add("A1", "C4", True) table = sheet.list_objects[index] rows = [] for r in range(table.start_row, table.end_row + 1): row_vals = [] for c in range(table.start_column, table.end_column + 1): cell = sheet.cells.check_cell(r, c) row_vals.append(cell.value if cell else "") rows.append(row_vals) list_object_array = np.asarray(rows, dtype=object) print(list_object_array)生成的 NumPy ndarray 将包含 Excel 表的行和列,如果它们是数据范围的一部分,则包括标题。
[['City', 'Region', 'Store'], ['Chicago', 'Central', '3055'], ['New York', 'East', '3036'], ['Detroit', 'Central', '3074']]
有时您只需要 Excel 中一行的数据。Aspose.Cells 可以轻松提取一行并将其直接加载到 NumPy ndarray 中。
以下 Python 代码显示如何将 Excel 表的一行转换为 NumPy ndarray:
import aspose.cells as cells import numpy as np # Load Excel file workbook = cells.Workbook("sample_data.xlsx") sheet = workbook.worksheets.get(0) sheet_cells = sheet.cells max_col = sheet_cells.max_data_column + 1 # choose a row (e.g., last data row) row_index = sheet_cells.max_data_row row_vals = [] for c in range(max_col): cell = sheet_cells.check_cell(row_index, c) row_vals.append(cell.value if cell else "") row_array = np.asarray(row_vals, dtype=object) print(row_array)生成的 NumPy ndarray 将是一个一维数组,包含所选行的所有值。
['Detroit' 'Central' 3074]
在某些情况下,您可能只需要 Excel 工作表单列中的值。Aspose.Cells 可让您轻松导出该列并将其转换为 NumPy ndarray。
以下 Python 代码显示如何将 Excel 表的列转换为 NumPy ndarray:
import aspose.cells as cells import numpy as np # Load Excel file workbook = cells.Workbook("D:\\Files\\sample_data.xlsx") sheet = workbook.worksheets.get(0) sheet_cells = sheet.cells max_row = sheet_cells.max_data_row + 1 # choose a column (e.g., last data column) col_index = sheet_cells.max_data_column col_vals = [] for r in range(max_row): cell = sheet_cells.check_cell(r, col_index) col_vals.append(cell.value if cell else "") column_array = np.asarray(col_vals, dtype=object) print(column_array)生成的 NumPy ndarray 将是一个包含所选列的所有值的一维数组。
['Store' 3055 3036 3074]
内存注意事项:将非常大的工作簿转换为 NumPy 数组可能会消耗大量内存。请单独处理工作表,或尽可能读取特定范围的数据。
数据类型:如果您的电子表格包含混合类型(字符串、数字、日期),请在将列表转换为 NumPy 数组时指定 dtype=object。对于同质数值数据,您可以让 NumPy 推断其类型。
缺失值:Aspose.Cells 对于空单元格返回 None。在上面的示例中,我们用空字符串替换了它们。您也可以根据具体情况,用 np.nan 或其他标记值替换它们。
Aspose.Cells for Python via .NET 简化了 Excel 数据到 NumPy 数组的转换。无论您需要的是整个工作簿、单个工作表、特定区域、表格、行还是列,该库都提供了清晰的方法来遍历单元格并构建 NumPy 可以使用的列表。通过将 Aspose.Cells 读取多种电子表格格式的能力与 NumPy 的数值计算能力相结合,您可以将 Excel 数据无缝集成到您的 Python 数据管道中。
————————————————————————————————————————
关于慧都科技:
慧都科技是专注软件工程、智能制造、石油工程三大行业的数字化解决方案服务商。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。慧都科技Aspose在中国的官方授权代理商,提供Aspose系列产品免费试用,咨询,正版销售等于一体的专业化服务。Aspose是文档处理领域的优秀产品,帮助企业高效构建文档处理的应用程序。
下载|体验更多Aspose产品,请联系在线客服咨询,或拨打产品热线:023-68661681
加入Aspose技术交流QQ群(1041253375),与更多小伙伴一起探讨提升开发技能。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:慧都网