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.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算法的核心思想是: 對于一個新的數據點,算法會在訓練數據集中找到與…