Excel处理控件Aspose.Cells教程:使用Python将 Excel 转换为 NumPy

使用 Python 处理 Excel 数据非常常见。这通常涉及将数据从 Excel 转换为可高效操作的形式。将 Excel 数据转换为可分析的格式可能非常棘手。在本篇教程中,您将学习借助强大Excel处理控件**++Aspose.Cells for Python++**,如何仅用几行代码将 Excel 转换为 NumPy 数组。

为什么选择 NumPy?

NumPy(数值 Python)是一个开源 Python 库。它是 Python 数据科学和机器学习的支柱。NumPy 提供快速的数组操作和高效的数值计算。它可以与 Pandas、TensorFlow 和 scikit-learn 流畅协作。该库支持多维数组、矩阵、线性代数和傅里叶变换。数组使用连续内存,因此比 Python 列表更快。如此高的速度使 NumPy 成为科学计算和数据分析的核心工具。

Excel 广泛用于存储数据集,但它并未针对 Python 工作流程进行优化。传统的转换方法通常需要额外的库、多个步骤以及手动解析。++Aspose.Cells++ 允许您将数据从Excel、TSV、CSV和JSON格式直接导出到 NumPy 数组。这将电子表格与 Python 的数值工具连接起来。

什么是 Aspose.Cells for Python?

++Aspose.Cells++ 是面向 Python 开发人员的最佳 Excel 库。它允许读取、创建和操作电子表格,而无需依赖 Microsoft Excel。通过 .NET 的 Python 版本嵌入了 ++Aspose.Cells++ 的 .NET 版本并将其公开给 Python。**++Aspose.Cells++**简化了 Excel 到 NumPy 的转换过程。它允许您将整个工作簿、工作表、范围、行、列,甚至列表对象直接导出到 NumPy ndarray 中。这意味着您可以轻松将原始 Excel 文件转换为干净、可立即使用的数据,用于分析或机器学习。

Aspose.Cells官方试用版免费下载

您可以从 PyPI 安装它:

复制代码
pip install aspose‑cells‑python

安装完成后,将该库与 NumPy 一起导入:

复制代码
import aspose.cells as cells
import numpy as np

如何将 Excel 工作簿转换为 NumPy

一个工作簿可能包含多个工作表。您可以一次性将整个 Excel 工作簿导出为 NumPy ndarray。当您想直接在 Python 中处理所有工作表的数据时,这非常方便。

按照以下步骤将 Excel 工作簿转换为 NumPy ndarray:

  1. 使用该类加载 Excel 工作簿Workbook。
  2. 从工作簿访问所有工作表。
  3. 循环遍历每个工作表以读取其使用的行和列。
  4. 逐行提取单元格值。
  5. 将每张表的数据存储到列表列表中。
  6. 使用 np.asarray() 将收集的数据转换为 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

有时,您可能希望使用单个工作表而不是整个工作簿。您可以按照以下步骤直接提取一个工作表的单元格值并将其转换为 NumPy ndarray:

  1. 将类加载到 Excel 文件Workbook。
  2. 通过索引访问目标工作表。
  3. 获取最大使用的行数和列数。
  4. 循环遍历每一行和每一列来收集单元格值。
  5. 将提取的数据存储在列表中。
  6. 使用 np.asarray() 将列表转换为 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']]

如何将 Excel 数据转换为 NumPy 数据

在某些情况下,您只需要特定范围的单元格。**++Aspose.Cells++**允许您定义一个范围并将其直接导出到 NumPy ndarray。

请按照以下步骤操作:

  1. 将类加载到工作簿中Workbook。
  2. 选择目标工作表。
  3. 使用该方法定义一个范围worksheet.cells.create_range()。
  4. 循环遍历范围的行和列来提取值。
  5. 使用 np.asarray() 将值转换为 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 表(ListObject)转换为 NumPy

Excel 表格是包含标题和行的结构化数据区域。在 ++Aspose.Cells++ 中,它以 ListObject 的形式表示。您可以轻松地将 Excel 表格的内容导出到 NumPy ndarray 中,以便在 Python 中进一步处理。

  1. 加载工作簿并选择工作表。
  2. 从工作表访问 ListObject(Excel 表)。
  3. 将表的数据导出到二维数组中。
  4. 将数组转换为 NumPy ndarray。
  5. 使用 ndarray 进行数据科学或机器学习工作流程。

以下代码示例显示如何将 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 中的一行数据转换为 NumPy 格式

有时您只需要 Excel 中一行的数据。++Aspose.Cells++ 可以轻松提取一行并将其直接加载到 NumPy ndarray 中。

  1. 加载 Excel 工作簿。
  2. 选择工作表。
  3. 选择要导出的行索引。
  4. 将行值导出为数组。
  5. 将数组转换为 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 列转换为 NumPy

在某些情况下,您可能只需要 Excel 工作表单列中的值。**++Aspose.Cells++**可让您轻松导出该列并将其转换为 NumPy ndarray。

  1. 加载 Excel 工作簿。
  2. 选择目标工作表。
  3. 选择要导出的列索引。
  4. 导出列值。
  5. 将值转换为 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]

使用 Aspose.Cells 和 NumPy 的技巧

  • 内存注意事项:将非常大的工作簿转换为 NumPy 数组可能会消耗大量内存。请单独处理工作表,或尽可能读取特定范围的数据。

  • 数据类型:如果您的电子表格包含混合类型(字符串、数字、日期),请在将列表转换为 NumPy 数组时指定 dtype=object。对于同质数值数据,您可以让 NumPy 推断其类型。

  • 缺失值:Aspose.Cells 对于空单元格返回 None。在上面的示例中,我们用空字符串替换了它们。您也可以根据具体情况,用 np.nan 或其他标记值替换它们。

结论

++Aspose.Cells for Python via .NET++ 简化了 Excel 数据到 NumPy 数组的转换。无论您需要的是整个工作簿、单个工作表、特定区域、表格、行还是列,该库都提供了清晰的方法来遍历单元格并构建 NumPy 可以使用的列表。通过将 ++Aspose.Cells++ 读取多种电子表格格式的能力与 NumPy 的数值计算能力相结合,您可以将 Excel 数据无缝集成到您的 Python 数据管道中。

相关推荐
计算机编程小咖18 分钟前
《基于大数据的农产品交易数据分析与可视化系统》选题不当,毕业答辩可能直接挂科
java·大数据·hadoop·python·数据挖掘·数据分析·spark
zhangfeng11331 小时前
以下是基于图论的归一化切割(Normalized Cut)图像分割工具的完整实现,结合Tkinter界面设计及Python代码示
开发语言·python·图论
flashlight_hi2 小时前
LeetCode 分类刷题:2529. 正整数和负整数的最大计数
python·算法·leetcode
Ashlee_code2 小时前
香港券商櫃台系統跨境金融研究
java·python·科技·金融·架构·系统架构·区块链
Jia-Hui Su3 小时前
GDSFactory环境配置(PyCharm+Git+KLayout)
git·python·pycharm
学习3人组4 小时前
手写数字识别代码
人工智能·python
古译汉书4 小时前
蓝桥杯算法之基础知识(2)——Python赛道
数据结构·python·算法·蓝桥杯
少陵野小Tommy4 小时前
Python能用古诗词数据库做什么7:根据标题、诗句查找诗歌
开发语言·数据库·python
IT·陈寒5 小时前
新手小白零基础搭建MCP教程
python·ai·tools·mcp
倔强青铜三5 小时前
苦练Python第42天:Python类(Class)初探,面向对象编程入门
人工智能·python·面试