Excel处理控件Aspose.Cells教程:使用Python将 Excel 转换为 NumPy
<p><img src="https://image.evget.com/attachment/keditor/image/20250822/105128_5.png"></p><p>使用 Python 处理 Excel 数据非常常见。这通常涉及将数据从 Excel 转换为可高效操作的形式。将 Excel 数据转换为可分析的格式可能非常棘手。在本篇教程中,您将学习借助强大Excel处理控件<strong><u>Aspose.Cells for Python</u></strong>,如何仅用几行代码将 Excel 转换为 NumPy 数组。</p>
<h2 id="why-numpy">为什么选择 NumPy?</h2>
<p>NumPy(数值 Python)是一个开源 Python 库。它是 Python 数据科学和机器学习的支柱。NumPy 提供快速的数组操作和高效的数值计算。它可以与 Pandas、TensorFlow 和 scikit-learn 流畅协作。该库支持多维数组、矩阵、线性代数和傅里叶变换。数组使用连续内存,因此比 Python 列表更快。如此高的速度使 NumPy 成为科学计算和数据分析的核心工具。</p>
<p>Excel 广泛用于存储数据集,但它并未针对 Python 工作流程进行优化。传统的转换方法通常需要额外的库、多个步骤以及手动解析。<strong><u>Aspose.Cells</u></strong> 允许您将数据从Excel、TSV、CSV和JSON格式直接导出到 NumPy 数组。这将电子表格与 Python 的数值工具连接起来。</p>
<h2 id="what-is-asposecells-for-python">什么是 Aspose.Cells for Python?</h2>
<p><strong><u>Aspose.Cells</u></strong>是面向 Python 开发人员的最佳 Excel 库。它允许读取、创建和操作电子表格,而无需依赖 Microsoft Excel。通过 .NET 的 Python 版本嵌入了 <strong><u>Aspose.Cells</u></strong> 的 .NET 版本并将其公开给 Python。<strong><u>Aspose.Cells </u></strong>简化了 Excel 到 NumPy 的转换过程。它允许您将整个工作簿、工作表、范围、行、列,甚至列表对象直接导出到 NumPy ndarray 中。这意味着您可以轻松将原始 Excel 文件转换为干净、可立即使用的数据,用于分析或机器学习。</p>
<p> </p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Aspose.Cells官方试用版免费下载,请联系Aspose官方授权代理商<span style="text-decoration: underline">慧都科技</span></strong></span></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong><em>加入Aspose技术交流QQ群(1041253375),与更多小伙伴一起探讨提升开发技能。</em></strong></span></p>
<p> </p>
<p>您可以从 PyPI 安装它:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>pip install aspose‑cells‑python</code></pre>
<p>安装完成后,将该库与 NumPy 一起导入:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>import aspose.cells as cells
import numpy as np</code></pre>
<h2 id="how-to-convert-excel-workbook-to-numpy">如何将 Excel 工作簿转换为 NumPy</h2>
<p>一个工作簿可能包含多个工作表。您可以一次性将整个 Excel 工作簿导出为 NumPy ndarray。当您想直接在 Python 中处理所有工作表的数据时,这非常方便。</p>
<p>按照以下步骤将 Excel 工作簿转换为 NumPy ndarray:</p>
<ol>
<li>使用该类加载 Excel 工作簿Workbook。</li>
<li>从工作簿访问所有工作表。</li>
<li>循环遍历每个工作表以读取其使用的行和列。</li>
<li>逐行提取单元格值。</li>
<li>将每张表的数据存储到列表列表中。</li>
<li>使用 np.asarray() 将收集的数据转换为 NumPy ndarray。</li>
</ol>
<p>以下是导出示例工作簿的简化 Python 脚本:</p>
<pre class="prettyprint lang-py highlighter-hljs"><code>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)</code></pre>
<p><img src="https://image.evget.com/attachment/keditor/image/20250822/105346_1.jpg"></p>
<p> </p>
<p> </p>
<p>如何将 Excel 工作簿转换为 NumPy</p>
<p>此脚本将所有空白单元格替换为空字符串,并将所有工作表合并为一个 NumPy 数组。最终的 excel_array 是三维的:第一层代表工作表,第二层代表行,第三层代表列。</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>[[['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']]]</code></pre>
<h2 id="converting-a-single-worksheet-to-numpy">将单个工作表转换为 NumPy</h2>
<p>有时,您可能希望使用单个工作表而不是整个工作簿。您可以按照以下步骤直接提取一个工作表的单元格值并将其转换为 NumPy ndarray:</p>
<ol>
<li>将类加载到 Excel 文件Workbook。</li>
<li>通过索引访问目标工作表。</li>
<li>获取最大使用的行数和列数。</li>
<li>循环遍历每一行和每一列来收集单元格值。</li>
<li>将提取的数据存储在列表中。</li>
<li>使用 np.asarray() 将列表转换为 NumPy ndarray。</li>
</ol>
<p>以下是导出单个工作表的 Python 脚本:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>import aspose.cells as cells
import numpy as np
# load workbook
workbook = cells.Workbook("sample_data.xlsx")
# access the first worksheet
sheet = workbook.worksheets
# 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)</code></pre>
<p>这将创建一个 2D ndarray,其中行映射到 Excel 行,列映射到 Excel 列。</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>[['City' 'Region' 'Store']
['Chicago' 'Central' '3055']
['New York' 'East' '3036']
['Detroit' 'Central' '3074']]</code></pre>
<h2 id="how-to-convert-a-range-of-excel-to-numpy">如何将 Excel 数据转换为 NumPy 数据</h2>
<p>在某些情况下,您只需要特定范围的单元格。<strong><u>Aspose.Cells </u></strong>允许您定义一个范围并将其直接导出到 NumPy ndarray。</p>
<p>请按照以下步骤操作:</p>
<ol>
<li>将类加载到工作簿中Workbook。</li>
<li>选择目标工作表。</li>
<li>使用该方法定义一个范围worksheet.cells.create_range()。</li>
<li>循环遍历范围的行和列来提取值。</li>
<li>使用 np.asarray() 将值转换为 NumPy ndarray。</li>
</ol>
<p>以下代码示例显示如何将一系列单元格从 Excel 转换为 NumPy ndarray:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>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)</code></pre>
<p>如果选定范围覆盖两列三行,则生成的数组将为 3×2,例如:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>[['City' 'Region']
['Chicago' 'Central']
['New York' 'East']]</code></pre>
<h2 id="converting-an-excel-table-listobject-to-numpy">将 Excel 表(ListObject)转换为 NumPy</h2>
<p>Excel 表格是包含标题和行的结构化数据区域。在 <strong><u>Aspose.Cells</u></strong> 中,它以 ListObject 的形式表示。您可以轻松地将 Excel 表格的内容导出到 NumPy ndarray 中,以便在 Python 中进一步处理。</p>
<ol>
<li>加载工作簿并选择工作表。</li>
<li>从工作表访问 ListObject(Excel 表)。</li>
<li>将表的数据导出到二维数组中。</li>
<li>将数组转换为 NumPy ndarray。</li>
<li>使用 ndarray 进行数据科学或机器学习工作流程。</li>
</ol>
<p>以下代码示例显示如何将 Excel 表(ListObject)导出到 NumPy:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>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
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)</code></pre>
<p>生成的 NumPy ndarray 将包含 Excel 表的行和列,如果它们是数据范围的一部分,则包括标题。</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>[['City', 'Region', 'Store'],
['Chicago', 'Central', '3055'],
['New York', 'East', '3036'],
['Detroit', 'Central', '3074']]</code></pre>
<h2 id="how-to-convert-a-row-of-excel-to-numpy">如何将 Excel 中的一行数据转换为 NumPy 格式</h2>
<p>有时您只需要 Excel 中一行的数据。<strong><u>Aspose.Cells</u></strong> 可以轻松提取一行并将其直接加载到 NumPy ndarray 中。</p>
<ol>
<li>加载 Excel 工作簿。</li>
<li>选择工作表。</li>
<li>选择要导出的行索引。</li>
<li>将行值导出为数组。</li>
<li>将数组转换为 NumPy ndarray 进行处理。</li>
</ol>
<p>以下 Python 代码显示如何将 Excel 表的一行转换为 NumPy ndarray:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>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)</code></pre>
<p>生成的 NumPy ndarray 将是一个一维数组,包含所选行的所有值。</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>['Detroit' 'Central' 3074]</code></pre>
<h2 id="convert-a-column-of-excel-to-numpy">将 Excel 列转换为 NumPy</h2>
<p>在某些情况下,您可能只需要 Excel 工作表单列中的值。<strong><u>Aspose.Cells </u></strong>可让您轻松导出该列并将其转换为 NumPy ndarray。</p>
<ol>
<li>加载 Excel 工作簿。</li>
<li>选择目标工作表。</li>
<li>选择要导出的列索引。</li>
<li>导出列值。</li>
<li>将值转换为 NumPy ndarray。</li>
</ol>
<p>以下 Python 代码显示如何将 Excel 表的列转换为 NumPy ndarray:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>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)</code></pre>
<p>生成的 NumPy ndarray 将是一个包含所选列的所有值的一维数组。</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>['Store' 3055 3036 3074]</code></pre>
<h2 id="tips-for-working-with-asposecells-and-numpy">使用 Aspose.Cells 和 NumPy 的技巧</h2>
<ul>
<li>
<p><strong>内存注意事项</strong>:将非常大的工作簿转换为 NumPy 数组可能会消耗大量内存。请单独处理工作表,或尽可能读取特定范围的数据。</p>
</li>
<li>
<p><strong>数据类型</strong>:如果您的电子表格包含混合类型(字符串、数字、日期),请在将列表转换为 NumPy 数组时指定 dtype=object。对于同质数值数据,您可以让 NumPy 推断其类型。</p>
</li>
<li>
<p><strong>缺失值</strong>:Aspose.Cells 对于空单元格返回 None。在上面的示例中,我们用空字符串替换了它们。您也可以根据具体情况,用 np.nan 或其他标记值替换它们。</p>
</li>
</ul>
<h2 id="conclusion">结论</h2>
<p><strong><u>Aspose.Cells for Python via .NET </u></strong>简化了 Excel 数据到 NumPy 数组的转换。无论您需要的是整个工作簿、单个工作表、特定区域、表格、行还是列,该库都提供了清晰的方法来遍历单元格并构建 NumPy 可以使用的列表。通过将 <strong><u>Aspose.Cells</u></strong> 读取多种电子表格格式的能力与 NumPy 的数值计算能力相结合,您可以将 Excel 数据无缝集成到您的 Python 数据管道中。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Aspose.Cells官方试用版免费下载,请联系Aspose官方授权代理商<span style="text-decoration: underline">慧都科技</span></strong></span></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong><em>加入Aspose技术交流QQ群(1041253375),与更多小伙伴一起探讨提升开发技能。</em></strong></span></p><br><br>
来源:https://www.cnblogs.com/software-Development/p/19052634
頁:
[1]