Làm việc với dữ liệu Excel trong Python là rất phổ biến. Nó thường liên quan đến việc di chuyển dữ liệu từ Excel vào một định dạng có thể được thao tác hiệu quả. Chuyển đổi dữ liệu Excel thành một định dạng sẵn sàng cho phân tích có thể khá khó khăn. Trong bài viết blog này, bạn sẽ học cách chuyển đổi Excel thành các mảng NumPy chỉ trong vài dòng mã.

Tại sao lại là NumPy?

NumPy (Numerical Python) là một thư viện Python mã nguồn mở. Nó là xương sống của khoa học dữ liệu và học máy trong Python. NumPy cung cấp các phép toán với mảng nhanh và tính toán số học hiệu quả. Nó hoạt động mượt mà với pandas, TensorFlow và scikit-learn. Thư viện hỗ trợ các mảng nhiều chiều, ma trận, đại số tuyến tính và biến đổi Fourier. Các mảng sử dụng bộ nhớ liên tục, làm cho chúng nhanh hơn so với danh sách Python. Tốc độ này làm cho NumPy trở thành một công cụ cốt lõi cho tính toán khoa học và phân tích dữ liệu.

Excel được sử dụng rộng rãi để lưu trữ tập dữ liệu, nhưng nó không được tối ưu hóa cho các quy trình làm việc với Python. Các phương pháp chuyển đổi truyền thống thường yêu cầu thêm thư viện, nhiều bước, và phân tích thủ công. Aspose.Cells cho phép bạn xuất dữ liệu từ Excel, TSV, CSV, và JSON trực tiếp vào các mảng NumPy. Điều này kết nối các bảng tính với các công cụ số của Python.

Aspose.Cells for Python là gì?

Aspose.Cellsthư viện Excel tốt nhất cho lập trình viên Python.Nó cho phép đọc, tạo và thao tác với bảng tính mà không cần phụ thuộc vào Microsoft Excel. Biến thể Python qua .NET nhúng phiên bản .NET của Aspose.Cells và đưa nó đến Python. Aspose.Cells đơn giản hóa quy trình chuyển đổi Excel thành NumPy. Nó cho phép bạn xuất một workbook, worksheet, phạm vi, hàng, cột, hoặc thậm chí một đối tượng danh sách hoàn toàn vào ndarrays NumPy. Điều này có nghĩa là bạn có thể chuyển từ các tệp Excel thô sang dữ liệu sạch, sẵn sàng sử dụng cho phân tích hoặc học máy với nỗ lực tối thiểu.

Bạn có thể cài đặt nó từ PyPI:

pip install aspose‑cells‑python

Một khi đã cài đặt, hãy nhập thư viện cùng với NumPy:

import aspose.cells as cells
import numpy as np

Cách chuyển đổi Sổ sách Excel thành NumPy

Một workbook có thể chứa nhiều bảng tính. Bạn có thể xuất toàn bộ workbook Excel vào một mảng NumPy ndarray trong một lần. Điều này rất tiện lợi khi bạn muốn xử lý dữ liệu từ tất cả các bảng tính trực tiếp trong Python.

Làm theo các bước dưới đây để chuyển đổi một workbook Excel thành một mảng NumPy ndarray:

  1. Tải sách Excel bằng cách sử dụng lớp Workbook.
  2. Truy cập tất cả các bảng tính từ sổ làm việc.
  3. Lặp qua từng bảng tính để đọc các hàng và cột đã sử dụng của nó.
  4. Lấy giá trị ô theo hàng.
  5. Lưu dữ liệu của mỗi trang vào một danh sách các danh sách.
  6. Chuyển đổi dữ liệu đã thu thập thành một ndarray NumPy bằng cách sử dụng np.asarray().

Dưới đây là một đoạn mã Python đơn giản xuất một workbook mẫu:

import aspose.cells as cells
import numpy as np

# load workbook
workbook = cells.Workbook("sample_data.xlsx")
sheets = workbook.worksheets

# chuẩn bị một danh sách rỗng để chứa dữ liệu bảng tính
sheets_data = []

# lặp qua các bảng tính
for sheet in sheets:
    # sheet = workbook.worksheets.get(sheetindex)
    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)

# chuyển đổi thành ndarray với dtype=object để bảo toàn chuỗi
excel_array = np.asarray(sheets_data, dtype=object)
print(excel_array)
Cách Chuyển Đổi Tập Tin Excel Thành NumPy

Cách chuyển đổi Workbook Excel sang NumPy

Kịch bản này thay thế bất kỳ ô trống nào bằng chuỗi rỗng và kết hợp tất cả các bảng tính thành một mảng NumPy. Mảng excelarray cuối cùng có ba chiều: cấp độ đầu tiên đại diện cho các bảng, cấp độ thứ hai đại diện cho các hàng, và cấp độ thứ ba đại diện cho các cột.

[[['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']]]

Chuyển đổi một Bảng tính Đơn lẻ sang NumPy

Đ đôi khi, bạn có thể muốn làm việc với một bảng tính duy nhất thay vì toàn bộ sổ làm việc. Bạn có thể trực tiếp trích xuất giá trị ô của một bảng tính và chuyển đổi chúng thành mảng NumPy ndarray bằng cách làm theo các bước dưới đây:

  1. Tải tệp Excel bằng lớp Workbook.
  2. Truy cập bảng tính mục tiêu theo chỉ số của nó.
  3. Lấy số hàng và cột được sử dụng nhiều nhất.
  4. Lặp qua mỗi hàng và cột để thu thập giá trị ô.
  5. Lưu trữ dữ liệu đã trích xuất vào một danh sách.
  6. Chuyển đổi danh sách thành ndarray NumPy với np.asarray().

Dưới đây là đoạn mã Python xuất một bảng tính đơn:

import aspose.cells as cells
import numpy as np

# load workbook
workbook = cells.Workbook("sample_data.xlsx")

# truy cập vào bảng tính đầu tiên
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)

# chuyển thành ndarray numpy
worksheet_array = np.asarray(rows, dtype=object)
print(worksheet_array)

Điều này tạo ra một ndarray 2D mà trong đó các hàng ánh xạ đến các hàng của Excel và các cột ánh xạ đến các cột của Excel.

[['City' 'Region' 'Store']    
 ['Chicago' 'Central' '3055'] 
 ['New York' 'East' '3036']   
 ['Detroit' 'Central' '3074']]

Cách Chuyển Đổi Một Dải Excel Thành NumPy

Trong một số trường hợp, bạn chỉ cần một phạm vi ô cụ thể. Aspose.Cells cho phép bạn định nghĩa một phạm vi và xuất nó trực tiếp vào một mảng NumPy ndarray.

Theo các bước dưới đây:

  1. Tải sổ làm việc với lớp Workbook.
  2. Chọn bảng tính mục tiêu.
  3. Định nghĩa một khoảng bằng cách sử dụng phương thức worksheet.cells.createrange().
  4. Lặp qua các hàng và cột của phạm vi để trích xuất giá trị.
  5. Chuyển đổi các giá trị thành một ndarray NumPy bằng cách sử dụng np.asarray().

Ví dụ mã sau đây cho thấy cách chuyển đổi một phạm vi ô từ Excel sang NumPy ndarray:

import aspose.cells as cells
import numpy as np

# load workbook
workbook = cells.Workbook("sample_data.xlsx")

# chọn bảng tính đầu tiên
sheet = workbook.worksheets.get(0)

# định nghĩa một khoảng (B1 đến C3)
cell_range = sheet.cells.create_range("B1", "C3")

# trích xuất dữ liệu từ phạm vi
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)

# chuyển đổi thành ndarray numpy
range_array = np.asarray(range_data, dtype=object)
print(range_array)

Nếu phạm vi đã chọn bao gồm hai cột và ba hàng, mảng kết quả sẽ là 3×2, chẳng hạn:

[['City' 'Region']
 ['Chicago' 'Central']
 ['New York' 'East']]

Chuyển đổi một Bảng Excel (ListObject) sang NumPy

Một Bảng Excel là một phạm vi dữ liệu có cấu trúc với tiêu đề và hàng. Trong Aspose.Cells, điều này được đại diện dưới dạng một ListObject. Bạn có thể dễ dàng xuất nội dung của một Bảng Excel sang một ndarray NumPy để xử lý sơ bộ trong Python.

  1. Tải sổ làm việc và chọn bảng tính.
  2. Truy cập đối tượng ListObject (Bảng Excel) từ bảng tính.
  3. Xuất dữ liệu của bảng vào một mảng hai chiều.
  4. Chuyển đổi mảng thành một ndarray NumPy.
  5. Sử dụng ndarray cho khoa học dữ liệu hoặc quy trình làm việc học máy.

Ví dụ mã sau đây cho thấy cách xuất một bảng Excel (ListObject) sang NumPy:

import aspose.cells as cells
import numpy as np

# Tải tệp Excel
workbook = cells.Workbook("sample_data.xlsx")
sheet = workbook.worksheets.get(0)

# Tạo một bảng bao gồm A1:C4 với tiêu đề
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)

Mảng NumPy ndarray kết quả sẽ chứa các hàng và cột của Bảng Excel, bao gồm cả tiêu đề nếu chúng là một phần của phạm vi dữ liệu.

[['City', 'Region', 'Store'],
 ['Chicago', 'Central', '3055'],
 ['New York', 'East', '3036'],
 ['Detroit', 'Central', '3074']]

Cách Chuyển Đổi Một Hàng Trong Excel Thành NumPy

Đôi khi bạn chỉ cần dữ liệu từ một hàng trong Excel. Aspose.Cells làm cho việc trích xuất một hàng và tải nó trực tiếp vào một mảng NumPy ndarray trở nên đơn giản.

  1. Tải workbook Excel.
  2. Chọn bảng tính.
  3. Chọn chỉ số hàng bạn muốn xuất.
  4. Xuất các giá trị hàng dưới dạng một mảng.
  5. Chuyển đổi mảng thành một ndarray của NumPy để xử lý.

Mã Python dưới đây cho thấy cách chuyển đổi một hàng trong bảng tính Excel thành ndarray NumPy:

import aspose.cells as cells
import numpy as np

# Tải tệp Excel lên
workbook = cells.Workbook("sample_data.xlsx")
sheet = workbook.worksheets.get(0)
sheet_cells = sheet.cells

max_col = sheet_cells.max_data_column + 1

# chọn một hàng (ví dụ: hàng dữ liệu cuối cùng)
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)

Mảng NumPy ndarray kết quả sẽ là một mảng một chiều chứa tất cả các giá trị từ hàng đã chọn.

['Detroit' 'Central' 3074]

Chuyển đổi một cột Excel thành NumPy

Trong một số trường hợp, bạn chỉ cần giá trị từ một cột duy nhất trong bảng Excel. Aspose.Cells cho phép bạn xuất một cột một cách dễ dàng và chuyển đổi nó thành một ndarray NumPy.

  1. Tải workbook Excel.
  2. Chọn bảng tính mục tiêu.
  3. Chọn chỉ số cột để xuất.
  4. Xuất các giá trị cột.
  5. Chuyển đổi các giá trị thành một ndarray của NumPy.

Mã Python sau đây cho thấy cách chuyển đổi một cột của bảng tính Excel thành mảng NumPy ndarray:

import aspose.cells as cells
import numpy as np

# Tải tệp Excel
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

# chọn một cột (ví dụ, cột dữ liệu cuối cùng)
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)

Mảng NumPy ndarray kết quả sẽ là một mảng một chiều chứa tất cả các giá trị từ cột được chọn.

['Store' 3055 3036 3074]

Mẹo để Làm việc với Aspose.Cells và NumPy

  • Các vấn đề về bộ nhớ: Việc chuyển đổi các bảng tính rất lớn thành mảng NumPy có thể tiêu tốn một lượng lớn bộ nhớ. Hãy xử lý từng bảng tính một cách riêng lẻ hoặc đọc các phạm vi cụ thể nếu có thể.

  • Các kiểu dữ liệu: Nếu bảng tính của bạn chứa các kiểu hỗn hợp (chuỗi, số, ngày tháng), hãy chỉ định dtype=object khi chuyển đổi danh sách thành mảng NumPy. Đối với dữ liệu số đồng nhất, bạn có thể để NumPy suy ra kiểu dữ liệu.

  • Giá trị thiếu: Aspose.Cells trả về None cho các ô trống. Trong các ví dụ trên, chúng tôi đã thay thế chúng bằng chuỗi trống. Bạn cũng có thể thay thế bằng np.nan hoặc một giá trị báo hiệu khác tùy thuộc vào trường hợp sử dụng của bạn.

Nhận Giấy phép Miễn Phí

Bạn có muốn khám phá sức mạnh đầy đủ của Aspose.Cells for Python không? Bạn có thể yêu cầu một giấy phép tạm thời miễn phí.Điều này cho phép bạn thử nghiệm tất cả các tính năng mà không có giới hạn hoặc dấu bản thử nghiệm.

Với giấy phép tạm thời, bạn có thể:

  • Làm việc với các tệp Excel lớn.
  • Áp dụng định dạng và phong cách nâng cao.
  • Thực hiện chuyển đổi (ví dụ, Excel sang PDF, NumPy và nhiều hơn nữa).

Đây là cách tốt nhất để đánh giá hiệu suất và khả năng tương thích với các dự án của bạn trước khi đưa ra quyết định mua hàng.

Tài nguyên hữu ích

Dưới đây là một số tài nguyên quý giá để giúp bạn bắt đầu với Aspose.Cells for Python thông qua .NET:

Kết luận

Aspose.Cells for Python qua .NET đơn giản hóa việc chuyển đổi dữ liệu Excel thành các mảng NumPy. Cho dù bạn cần toàn bộ sổ làm việc, một trang tính đơn, một phạm vi cụ thể, một bảng, một hàng hay một cột, thư viện cung cấp các phương thức rõ ràng để lặp qua các ô và xây dựng danh sách mà NumPy có thể sử dụng. Bằng cách kết hợp khả năng đọc nhiều định dạng bảng tính của Aspose.Cells với sức mạnh số của NumPy, bạn có thể tích hợp dữ liệu Excel một cách liền mạch vào các quy trình dữ liệu Python của mình.

Nếu bạn có bất kỳ câu hỏi nào, xin vui lòng hỏi tại free support forum, và chúng tôi sẽ vui lòng giúp đỡ.

Xem thêm