翻譯|使用教程|編輯:吉煒煒|2025-08-22 11:05:32.050|閱讀 46 次
概述:在本篇教程中,您將學(xué)習(xí)借助強(qiáng)大的Aspose.Cells,如何僅用幾行代碼將 Excel 轉(zhuǎn)換為 NumPy 數(shù)組。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
使用 Python 處理 Excel 數(shù)據(jù)非常常見。這通常涉及將數(shù)據(jù)從 Excel 轉(zhuǎn)換為可高效操作的形式。將 Excel 數(shù)據(jù)轉(zhuǎn)換為可分析的格式可能非常棘手。在本篇教程中,您將學(xué)習(xí)借助強(qiáng)大Excel處理控件Aspose.Cells for Python,如何僅用幾行代碼將 Excel 轉(zhuǎn)換為 NumPy 數(shù)組。
NumPy(數(shù)值 Python)是一個(gè)開源 Python 庫。它是 Python 數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)的支柱。NumPy 提供快速的數(shù)組操作和高效的數(shù)值計(jì)算。它可以與 Pandas、TensorFlow 和 scikit-learn 流暢協(xié)作。該庫支持多維數(shù)組、矩陣、線性代數(shù)和傅里葉變換。數(shù)組使用連續(xù)內(nèi)存,因此比 Python 列表更快。如此高的速度使 NumPy 成為科學(xué)計(jì)算和數(shù)據(jù)分析的核心工具。
Excel 廣泛用于存儲(chǔ)數(shù)據(jù)集,但它并未針對 Python 工作流程進(jìn)行優(yōu)化。傳統(tǒng)的轉(zhuǎn)換方法通常需要額外的庫、多個(gè)步驟以及手動(dòng)解析。Aspose.Cells 允許您將數(shù)據(jù)從Excel、TSV、CSV和JSON格式直接導(dǎo)出到 NumPy 數(shù)組。這將電子表格與 Python 的數(shù)值工具連接起來。
Aspose.Cells是面向 Python 開發(fā)人員的最佳 Excel 庫。它允許讀取、創(chuàng)建和操作電子表格,而無需依賴 Microsoft Excel。通過 .NET 的 Python 版本嵌入了 Aspose.Cells 的 .NET 版本并將其公開給 Python。Aspose.Cells 簡化了 Excel 到 NumPy 的轉(zhuǎn)換過程。它允許您將整個(gè)工作簿、工作表、范圍、行、列,甚至列表對象直接導(dǎo)出到 NumPy ndarray 中。這意味著您可以輕松將原始 Excel 文件轉(zhuǎn)換為干凈、可立即使用的數(shù)據(jù),用于分析或機(jī)器學(xué)習(xí)。
加入Aspose技術(shù)交流QQ群(1041253375),與更多小伙伴一起探討提升開發(fā)技能。
您可以從 PyPI 安裝它:
pip install aspose?cells?python安裝完成后,將該庫與 NumPy 一起導(dǎo)入:
import aspose.cells as cells import numpy as np
一個(gè)工作簿可能包含多個(gè)工作表。您可以一次性將整個(gè) Excel 工作簿導(dǎo)出為 NumPy ndarray。當(dāng)您想直接在 Python 中處理所有工作表的數(shù)據(jù)時(shí),這非常方便。
按照以下步驟將 Excel 工作簿轉(zhuǎn)換為 NumPy ndarray:
以下是導(dǎo)出示例工作簿的簡化 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 工作簿轉(zhuǎn)換為 NumPy
此腳本將所有空白單元格替換為空字符串,并將所有工作表合并為一個(gè) NumPy 數(shù)組。最終的 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']]]
有時(shí),您可能希望使用單個(gè)工作表而不是整個(gè)工作簿。您可以按照以下步驟直接提取一個(gè)工作表的單元格值并將其轉(zhuǎn)換為 NumPy ndarray:
以下是導(dǎo)出單個(gè)工作表的 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)這將創(chuàng)建一個(gè) 2D ndarray,其中行映射到 Excel 行,列映射到 Excel 列。
[['City' 'Region' 'Store'] ['Chicago' 'Central' '3055'] ['New York' 'East' '3036'] ['Detroit' 'Central' '3074']]
在某些情況下,您只需要特定范圍的單元格。Aspose.Cells 允許您定義一個(gè)范圍并將其直接導(dǎo)出到 NumPy ndarray。
請按照以下步驟操作:
以下代碼示例顯示如何將一系列單元格從 Excel 轉(zhuǎn)換為 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)如果選定范圍覆蓋兩列三行,則生成的數(shù)組將為 3×2,例如:
[['City' 'Region'] ['Chicago' 'Central'] ['New York' 'East']]
Excel 表格是包含標(biāo)題和行的結(jié)構(gòu)化數(shù)據(jù)區(qū)域。在 Aspose.Cells 中,它以 ListObject 的形式表示。您可以輕松地將 Excel 表格的內(nèi)容導(dǎo)出到 NumPy ndarray 中,以便在 Python 中進(jìn)一步處理。
以下代碼示例顯示如何將 Excel 表(ListObject)導(dǎo)出到 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 表的行和列,如果它們是數(shù)據(jù)范圍的一部分,則包括標(biāo)題。
[['City', 'Region', 'Store'], ['Chicago', 'Central', '3055'], ['New York', 'East', '3036'], ['Detroit', 'Central', '3074']]
有時(shí)您只需要 Excel 中一行的數(shù)據(jù)。Aspose.Cells 可以輕松提取一行并將其直接加載到 NumPy ndarray 中。
以下 Python 代碼顯示如何將 Excel 表的一行轉(zhuǎn)換為 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 將是一個(gè)一維數(shù)組,包含所選行的所有值。
['Detroit' 'Central' 3074]
在某些情況下,您可能只需要 Excel 工作表單列中的值。Aspose.Cells 可讓您輕松導(dǎo)出該列并將其轉(zhuǎn)換為 NumPy ndarray。
以下 Python 代碼顯示如何將 Excel 表的列轉(zhuǎn)換為 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 將是一個(gè)包含所選列的所有值的一維數(shù)組。
['Store' 3055 3036 3074]
內(nèi)存注意事項(xiàng):將非常大的工作簿轉(zhuǎn)換為 NumPy 數(shù)組可能會(huì)消耗大量內(nèi)存。請單獨(dú)處理工作表,或盡可能讀取特定范圍的數(shù)據(jù)。
數(shù)據(jù)類型:如果您的電子表格包含混合類型(字符串、數(shù)字、日期),請?jiān)趯?列表轉(zhuǎn)換為 NumPy 數(shù)組時(shí)指定 dtype=object。對于同質(zhì)數(shù)值數(shù)據(jù),您可以讓 NumPy 推斷其類型。
缺失值:Aspose.Cells 對于空單元格返回 None。在上面的示例中,我們用空字符串替換了它們。您也可以根據(jù)具體情況,用 np.nan 或其他標(biāo)記值替換它們。
Aspose.Cells for Python via .NET 簡化了 Excel 數(shù)據(jù)到 NumPy 數(shù)組的轉(zhuǎn)換。無論您需要的是整個(gè)工作簿、單個(gè)工作表、特定區(qū)域、表格、行還是列,該庫都提供了清晰的方法來遍歷單元格并構(gòu)建 NumPy 可以使用的列表。通過將 Aspose.Cells 讀取多種電子表格格式的能力與 NumPy 的數(shù)值計(jì)算能力相結(jié)合,您可以將 Excel 數(shù)據(jù)無縫集成到您的 Python 數(shù)據(jù)管道中。
————————————————————————————————————————
關(guān)于慧都科技:
慧都科技是專注軟件工程、智能制造、石油工程三大行業(yè)的數(shù)字化解決方案服務(wù)商。在軟件工程領(lǐng)域,我們提供開發(fā)控件、研發(fā)管理、代碼開發(fā)、部署運(yùn)維等軟件開發(fā)全鏈路所需的產(chǎn)品,提供正版授權(quán)采購、技術(shù)選型、個(gè)性化維保等服務(wù),幫助客戶實(shí)現(xiàn)技術(shù)合規(guī)、降本增效與風(fēng)險(xiǎn)可控。慧都科技Aspose在中國的官方授權(quán)代理商,提供Aspose系列產(chǎn)品免費(fèi)試用,咨詢,正版銷售等于一體的專業(yè)化服務(wù)。Aspose是文檔處理領(lǐng)域的優(yōu)秀產(chǎn)品,幫助企業(yè)高效構(gòu)建文檔處理的應(yīng)用程序。
下載|體驗(yàn)更多Aspose產(chǎn)品,請咨詢,或撥打產(chǎn)品熱線:023-68661681
加入Aspose技術(shù)交流QQ群(1041253375),與更多小伙伴一起探討提升開發(fā)技能。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)