使用 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.cellsmax_row = sheet_cells.max_data_row + 1  # number of populated rowsmax_col = sheet_cells.max_data_column + 1  # number of populated columnssheet_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.cellsmax_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 数据管道中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/919818.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/919818.shtml
英文地址,请注明出处:http://en.pswp.cn/news/919818.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 字典有序性的实现和OrderedDict

文章目录 一、Python 3.7+ 字典有序性的验证 二、如何在字典头部插入键值对 方法 1:创建新字典(推荐) 方法 2:使用 `collections.OrderedDict`(适合频繁头部插入场景) 方法 3:转换为列表操作(不推荐,效率低) 底层核心结构:双数组哈希表 有序性的实现原理 与旧版本(…

JVM 调优全流程案例:从频繁 Full GC 到百万 QPS 的实战蜕变

🔥 JVM 调优全流程案例:从频繁 Full GC 到百万 QPS 的实战蜕变 文章目录🔥 JVM 调优全流程案例:从频繁 Full GC 到百万 QPS 的实战蜕变🧩 一、调优本质:性能瓶颈的破局之道💡 为什么JVM调优如此…

基于TimeMixer现有脚本扩展的思路分析

文章目录1. 加入数据集到data_loader.py和data_factory.py2. 参照exp_classification.py写自定义分类任务脚本(如exp_ADReSS.py)3. 接一个MLP分类头4. 嵌入指标计算、绘图、保存训练历史的函数5. 开始训练总结**一、可行性分析****二、具体实现步骤****1…

技术演进中的开发沉思-75 Linux系列:中断和与windows中断的区分

作为一名从 2000 年走过来的老程序员,看着 IT 技术从桌面开发迭代到微服务时代,始终觉得好技术就像老故事 —— 得有骨架(知识点),更得有血肉(场景与感悟)。我想正是我的经历也促成了我想写这个…

【8位数取中间4位数】2022-10-23

缘由请输入一个8位的十进制整数,编写程序取出该整数的中间4位数,分别输出取出的这4位数以及该4位数加上1024的得数。 输入:一个整数。 输出:两个整数,用空格分隔-编程语言-CSDN问答 int n 0;std::cin >> n;std:…

mac电脑使用(windows转Mac用户)

首先,我们学习mac的键盘复制 command c 粘贴 command v 剪切 command xlinux命令行 退出中止 control c 退出后台 control d中英文切换大小写,按住左边向上的箭头 字母鼠标操作 滚轮:2个指头一起按到触摸板,上滑,…

项目中优惠券计算逻辑全解析(处理高并发)

其实这个部分的代码已经完成一阵子了,但是想了一下决定还是整理一下这部分的代码,因为最开始做的时候业务逻辑还是感觉挺有难度的整体流程概述优惠方案计算主要在DiscountServiceImpl类的findDiscountSolution方法中实现。整个计算过程可以分为以下五个步…

支持电脑课程、游戏、会议、网课、直播录屏 多场景全能录屏工具

白鲨录屏大师:支持电脑课程、游戏、会议、网课、直播录屏 多场景全能录屏工具,轻松捕捉每一刻精彩 在数字化学习、娱乐与办公场景中,高质量的录屏需求日益增长。无论是课程内容的留存、游戏高光的记录,还是会议要点的复盘、网课知…

LeetCode算法日记 - Day 20: 两整数之和、只出现一次的数字II

目录 1. 两数之和 1.1 题目解析 1.2 解法 1.3 代码实现 2. 只出现一次的数字II 2.1 题目解析 2.2 解法 2.3 代码实现 1. 两数之和 371. 两整数之和 - 力扣(LeetCode) 给你两个整数 a 和 b ,不使用 运算符 和 - ,计算并…

Spring AI 快速接入 DeepSeek 大模型

Spring AI 快速接入 DeepSeek 大模型 文章目录Spring AI 快速接入 DeepSeek 大模型Spring AI 框架概述核心特性适用场景官网与资源AI 提供商与模型类型模型类型(Model Type)AI提供商(Provider)两者的关系Spring AI 框架支持哪些 A…

jQuery 知识点复习总览

文章目录jQuery 知识点复习总览一、jQuery 基础1. jQuery 简介2. jQuery 引入3. jQuery 核心函数二、选择器1. 基本选择器2. 层级选择器3. 过滤选择器4. 表单选择器三、DOM 操作1. 内容操作2. 属性操作3. CSS 操作4. 元素操作四、事件处理1. 事件绑定2. 事件对象3. 自定义事件五…

博客系统接口自动化练习

框架图: 详细代码地址:gitee仓库 博客系统接口自动化文档请看文章顶部。

智慧矿山误报率↓83%!陌讯多模态融合算法在矿用设备监控的落地优化

原创声明:本文为原创技术解析文章,核心技术参数与架构设计引用自 “陌讯技术白皮书(智慧矿山专项版)”,算法部署相关资源适配参考aishop.mosisson.com平台的陌讯视觉算法专项适配包,禁止未经授权的转载与二…

Laravel 使用阿里云OSS S3 协议文件上传

1. 安装 S3 软件包 composer require league/flysystem-aws-s3-v3 "^3.0" --with-all-dependencies2. 配置.env 以阿里云 OSS 地域华东2 上海为例: FILESYSTEM_DISKs3 //设置默认上传到S3AWS_ACCESS_KEY_ID***…

UVM一些不常用的功能

uvm_coreservice_t是什么AI:在 UVM(Universal Verification Methodology)中,uvm_coreservice_t 是一个核心服务类,它扮演着UVM 框架内部核心服务的 “管理者” 和 “统一入口” 的角色。其主要作用是封装并提供对 UVM …

怎么确定mongodb是不是链接上了?

现有mongosh链接了MongoDB,里面能操作,但是想python进行链接,因为代码需要,现在测试下链接成功了没有。如下: 要确认你的 MongoDB 连接是否成功,可以通过以下方法检查: 1. 使用 list_database_names 方法【测试成功】 python import asyncioasync def test_connecti…

Unity 二进制读写小框架

文章目录前言框架获取与集成使用方法基本配置自动生成序列化方法实战示例技术原理与优势二进制序列化的优势SJBinary的设计特点最佳实践建议适用场景总结前言 在Unity开发过程中,与后台交互时经常需要处理大型数据文件。当遇到一个近2MB的本地JSON文件需要解析为对…

​Kubernetes 详解:云原生时代的容器编排与管理

一 Kubernetes 简介及部署方法 1.1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个阶段: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点&#xf…

Kotlin 中的枚举类 Enum Class

枚举类在 Kotlin 中是非常强大和灵活的工具,可以用于表示一组固定的常量,并且可以包含属性、方法、构造函数和伴生对象。它们在处理状态、选项等场景中非常有用。 1、枚举类的定义 枚举类用于创建具有一组数量有限的可能值的类型。 枚举的每个可能值都称为“枚举常量”。每个…

集成电路学习:什么是K-NN最近邻算法

K-NN:最近邻算法 K-NN,即K-最近邻算法(K-Nearest Neighbor algorithm),是一种基本的监督学习算法,广泛应用于分类和回归问题中。以下是对K-NN算法的详细解析: 一、K-NN算法的基本原理 1、K-NN算法的核心思想是: 对于一个新的数据点,算法会在训练数据集中找到与…