NumPy là một trong những thư viện phổ biến nhất trong Python. Nó hỗ trợ khoa học dữ liệu, học máy và phân tích số liệu. Nhiều lập trình viên sử dụng mảng NumPy (ndarray) để xử lý các tập dữ liệu lớn một cách nhanh chóng.

Trong bài viết blog trước, chúng tôi đã giải thích cách chuyển đổi tệp Excel thành mảng NumPy. Quy trình đó rất hữu ích khi bạn cần đưa dữ liệu bên ngoài vào Python để phân tích. Nhưng nếu bạn muốn điều ngược lại thì sao? Nhiều lần, bạn cần xuất kết quả Python của mình từ NumPy sang Excel để báo cáo và chia sẻ. Excel rất phổ biến trong các doanh nghiệp, trường học và tổ chức, điều này làm cho nó trở thành định dạng lý tưởng cho sự hợp tác.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn từng bước cách chuyển đổi NumPy sang Excel bằng cách sử dụng Python và Aspose.Cells for Python thông qua .NET.

Tại sao chuyển đổi NumPy sang Excel?

NumPy là công cụ hoàn hảo cho các phép tính và phân tích trong Python. Nhưng chúng ta thường cần chia sẻ kết quả với người khác. Hầu hết người dùng doanh nghiệp thích Excel vì nó quen thuộc và dễ sử dụng.

Dưới đây là một số lý do phổ biến mà bạn có thể cần xuất NumPy sang Excel:

  • Báo cáo dữ liệu: Chuyển đổi dữ liệu đã xử lý thành các tệp Excel cho các nhà quản lý hoặc khách hàng.
  • Hợp tác: Chia sẻ kết quả với các đồng đội không sử dụng Python.
  • Phân tích kinh doanh: Kết hợp kết quả NumPy với các báo cáo và bảng điều khiển Excel hiện có.
  • Hình ảnh hóa: Sử dụng biểu đồ Excel và bảng tổng hợp để làm cho dữ liệu có ý nghĩa hơn.

Excel là một định dạng phổ quát. Nó thu hẹp khoảng cách giữa các nhà phát triển Python và người dùng không kỹ thuật. Bằng cách xuất các mảng NumPy sang Excel, bạn làm cho dữ liệu của mình dễ tiếp cận, dễ sử dụng và dễ hiểu.

Python NumPy Thư viện Excel

Aspose.Cells for Python là một thư viện bảng tính mạnh mẽ. Nó cho phép bạn tạo, chỉnh sửa và xử lý các tệp Excel mà không cần cài đặt Microsoft Excel. Nó là thư viện Excel tốt nhất cho Python, được thiết kế cho các nhà phát triển cần kiểm soát đầy đủ các tài liệu Excel. Bạn có thể:

  • Tải và lưu tệp Excel ở các định dạng khác nhau.
  • Làm việc với bảng tính, bảng, phạm vi và biểu đồ.
  • Nhập khẩu và xuất khẩu dữ liệu từ các đối tượng Python, bao gồm cả mảng NumPy.
  • Xử lý các tập dữ liệu lớn với tốc độ cao và độ chính xác.

Phần tốt nhất là Aspose.Cells hoạt động độc lập. Bạn không cần Excel hoặc bất kỳ phần mềm bên ngoài nào. Nó chạy mượt mà trong các ứng dụng Python của bạn và tích hợp tốt với các quy trình làm việc khoa học. Điều này làm cho nó trở thành một giải pháp đáng tin cậy để chuyển đổi dữ liệu NumPy thành các tệp Excel.

Chuyển NumPy sang Excel trong Python

Chuyển đổi một mảng NumPy thành Excel với Aspose.Cells rất đơn giản. Làm theo các bước nhanh sau:

Bước 1: Cài đặt Aspose.Cells for Python thông qua .NET

Cài đặt gói bằng cách sử dụng pip:

pip install aspose-cells-python

Bước 2: Nhập các thư viện cần thiết

Trong kịch bản Python của bạn, hãy nhập NumPy và Aspose.Cells:

import numpy as np
import aspose.cells as cells

Bước 3: Tạo một mảng NumPy mẫu

Để kiểm tra, hãy tạo một mảng 2D đơn giản:

data = np.array([[1, 2, 3],
                 [4, 5, 6],
                 [7, 8, 9]])

Bước 4: Định nghĩa một Hàm Tùy Chỉnh – insertnumpyarray

Giá trị NumPy thường có kiểu như numpy.int64, numpy.float32 hoặc numpy.bool. Những giá trị này cần được chuyển đổi thành kiểu Python gốc trước khi ghi vào ô Excel.

Hàm trợ giúp dưới đây thực hiện việc chuyển đổi này và chèn mảng trực tiếp vào bảng tính bắt đầu từ hàng và cột đã cho:

# Hàm tùy chỉnh để chèn mảng NumPy vào bảng tính
def insert_numpy_array(sheet, ndarray, start_row=0, start_col=0):
    rows, cols = ndarray.shape
   for r in range(rows):
       for c in range(cols):
            value = ndarray[r, c]
            # Chuyển đổi các loại NumPy thành các loại Python nguyên thủy
            if isinstance(value, (np.integer,)):
                value = int(value)
            elif isinstance(value, (np.floating,)):
                value = float(value)
            elif isinstance(value, (np.bool_,)):
                value = bool(value)
            elif isinstance(value, (np.str_, np.str_)):
                value = str(value)
            sheet.cells.get(start_row + r, start_col + c).put_value(value)
            

Trong các phần tiếp theo, chúng tôi sẽ trình bày cách chèn dữ liệu NumPy vào một Workbook, Worksheet, ListObject, Range, và Named Range. Các ví dụ mã trong các phần sắp tới sử dụng hàm trợ giúp được định nghĩa trong phần Bước 4: Hàm Tùy Chỉnh.

Cách chuyển NumPy ndarray thành Workbook Excel

Bạn có thể tạo một sổ làm việc Excel hoàn chỉnh từ một mảng NumPy chỉ với vài dòng. Phương pháp này rất phù hợp khi bạn muốn xuất kết quả phân tích dữ liệu, đầu ra học máy hoặc tập dữ liệu dạng bảng vào một tệp Excel chuyên nghiệp mà có thể được chia sẻ hoặc xử lý thêm.

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

  1. Tạo một mảng 2D NumPy với dữ liệu của bạn.
  2. Khởi tạo một workbook mới trống rỗng bằng cách sử dụng lớp Workbook.
  3. Thêm một bảng tính mới vào sổ làm việc bằng cách sử dụng phương thức worksheets.add().
  4. Truy cập vào bảng tính mới bằng chỉ số của nó.
  5. Lặp qua mảng NumPy và chèn giá trị vào các ô trong bảng tính.
  6. Lưu sổ làm việc dưới dạng tệp Excel.

Ví dụ mã sau đây cho thấy cách chuyển đổi một ndarray của NumPy thành một workbook Excel.

# Tạo một mảng NumPy
data = np.array([[1, 2, 3],
                 [4, 5, 6],
                 [7, 8, 9]])

# Chuyển đổi mảng NumPy thành sổ làm việc Excel
workbook = cells.Workbook()

# Thêm một bảng tính mới
new_sheet_index = workbook.worksheets.add()
worksheet = workbook.worksheets.get(new_sheet_index)

# Chèn mảng vào worksheet mới bắt đầu từ ô A1
insert_numpy_array(worksheet, data)

# Lưu sổ làm việc dưới dạng tệp Excel
workbook.save("numpy_to_workbook.xlsx")
Cách Chuyển Đổi NumPy thành Sổ Tay Excel

Cách Chuyển Đổi NumPy Sang Sổ Tay Excel

Chèn mảng NumPy vào Bảng tính

Đôi khi bạn đã có một workbook, và bạn chỉ muốn chèn dữ liệu NumPy vào một worksheet.

Làm theo các bước dưới đây để chuyển đổi NumPy ndarray thành Worksheet:

  1. Tạo một mảng 2D NumPy với dữ liệu của bạn.
  2. Tải một tệp Excel hiện có bằng cách sử dụng lớp Workbook.
  3. Chọn bảng tính nơi bạn muốn đặt dữ liệu.
  4. Lặp qua mảng NumPy và chèn giá trị vào các ô của bảng tính.
  5. Lưu sổ làm việc dưới dạng tệp Excel.

Ví dụ mã sau đây cho thấy cách chèn một ndarray của NumPy vào một bảng tính cụ thể của một workbook Excel:

# Tạo một mảng NumPy
data = np.array([['City', 'Region', 'Store'], ['Chicago', 'Central', 3055], ['New York', 'East', 3036],
                 ['Detroit', 'Central', 3074]])

# Chuyển đổi mảng NumPy thành sổ làm việc Excel
workbook = cells.Workbook("numpy_to_workbook.xlsx")

# Truy cập vào worksheet đầu tiên
sheet = workbook.worksheets.get(0)

# Chèn mảng NumPy vào bảng tính bắt đầu từ A1
insert_numpy_array(sheet, data, 0, 0)

# Lưu sổ làm việc dưới dạng tệp Excel
workbook.save("numpy_to_worksheet.xlsx")
Cách chuyển đổi NumPy ndarray thành Worksheet

Cách chuyển đổi NumPy ndarray thành Worksheet

Cách chuyển đổi NumPy ndarray thành ListObject (Bảng Excel)

Bảng Excel (còn được gọi là ListObjects) là một cách mạnh mẽ để tổ chức và phân tích dữ liệu. Với Aspose.Cells, bạn có thể trực tiếp nhập một mảng NumPy vào một ListObject.

Vui lòng làm theo các bước dưới đây để chuyển đổi NumPy ndarray thành ListObject (Bảng Excel):

  1. Tạo một mảng 2D NumPy với dữ liệu mẫu.
  2. Khởi tạo một sổ làm việc mới và truy cập vào trang tính đầu tiên.
  3. Chèn dữ liệu NumPy vào các ô bảng tính bằng cách sử dụng một hàm trợ giúp.
  4. Định nghĩa các hàng và cột bắt đầu và kết thúc dựa trên kích thước của mảng.
  5. Thêm một ListObject vào bảng tính bằng cách sử dụng worksheet.listobjects.add().
  6. Gán một tên hiển thị cho ListObject.
  7. Lưu sổ làm việc dưới dạng tệp Excel.

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

# Tạo một mảng NumPy
data = np.array([[1, 2, 3],
                 [4, 5, 6],
                 [7, 8, 9]])

# Tạo một sổ tay Excel mới
workbook = cells.Workbook()
worksheet = workbook.worksheets.get(0)

# Chèn mảng NumPy vào bảng tính bắt đầu từ ô A1
insert_numpy_array(worksheet, data)

# Định nghĩa phạm vi cho ListObject
start_row, start_col = 0, 0
end_row, end_col = data.shape[0] - 1, data.shape[1] - 1

# Thêm ListObject (Bảng Excel) từ dữ liệu NumPy
index = worksheet.list_objects.add(start_row, start_col, end_row, end_col, True)
list_object = worksheet.list_objects[index]

# Đặt một tên hiển thị cho bảng
list_object.display_name = "NumPyTable"

# Lưu sổ làm việc
workbook.save("numpy_to_listobject.xlsx")
Cách chuyển đổi NumPy ndarray thành ListObject (Bảng Excel)

Cách chuyển đổi NumPy ndarray thành ListObject (Bảng Excel)

Chuyển đổi mảng NumPy ndarray thành Phạm vi

Đ đôi khi bạn có thể muốn đặt một mảng NumPy vào một phạm vi ô cụ thể. Phương pháp này là lý tưởng khi bạn cần đặt dữ liệu một cách chính xác bên trong các trang tính, chẳng hạn như điền vào khu vực bảng đã định nghĩa trước hoặc xuất kết quả phân tích vào một khối ô đã chọn.

Làm theo các bước dưới đây để chuyển đổi NumPy ndarray thành Range:

  1. Tạo một ndarray 2D NumPy.
  2. Tạo một bảng tính mới hoặc mở một bảng tính đã có.
  3. Chọn bảng tính mục tiêu.
  4. Lặp qua các giá trị ndarray và chèn vào các ô Excel tương ứng.
  5. Tạo một đối tượng Range với cells.createrange(startcell, endcell).
  6. Xuất bảng tính với vùng đã điền vào một tệp Excel.

Ví dụ mã sau đây cho thấy cách chèn một mảng NumPy ndarray vào một phạm vi Excel:

import numpy as np
from datetime import datetime
from aspose.cells import Workbook, CellsHelper

# Trợ giúp để đưa giá trị NumPy vào ô một cách an toàn
def put_cell_value(cells, raw_value, row, col):
    cell = cells.get(row, col)
    if isinstance(raw_value, (np.bool_,)):
        value = bool(raw_value)
    elif isinstance(raw_value, (np.integer,)):
        value = int(raw_value)
    elif isinstance(raw_value, (np.floating,)):
        value = float(raw_value)
    elif isinstance(raw_value, (np.datetime64,)):
        # Chuyển đổi numpy datetime64 → Python datetime → Chuỗi tương thích với Excel
        value = str(np.datetime_as_string(raw_value, unit='D'))
    else:
        value = raw_value
    cell.put_value(value)

# Hàm để chèn mảng NumPy vào các ô và trả về Phạm vi
def numpy_to_range(cells, data, start_row=0, start_col=0):
    rows, cols = data.shape
   for i in range(rows):
       for j in range(cols):
            put_cell_value(cells, data[i, j], start_row + i, start_col + j)

    # Xác định phạm vi dựa trên ô bắt đầu/kết thúc
    start_cell = CellsHelper.cell_index_to_name(start_row, start_col)
    end_cell = CellsHelper.cell_index_to_name(start_row + rows - 1, start_col + cols - 1)
    return cells.create_range(start_cell, end_cell)

# Tạo một mảng NumPy mẫu
data = np.array([
    ['City', 'Region', 'Store', 'Date'],
    ['Chicago', 'Central', 3055, np.datetime64('2025-01-15')],
    ['New York', 'East', 3036, np.datetime64('2025-02-10')],
    ['Detroit', 'Central', 3074, np.datetime64('2025-03-05')]
])

# Tạo một Workbook mới và lấy worksheet đầu tiên.
workbook = Workbook()
worksheet = workbook.worksheets.get(0)
cells = worksheet.cells

# Chèn ndarray vào bảng tính dưới dạng Phạm vi
range_obj = numpy_to_range(cells, data, 0, 0)

print("Row count:", range_obj.row_count)
print("Column count:", range_obj.column_count)

# Lưu workbook
workbook.save("numpy_to_range.xlsx")
Cách chuyển đổi NumPy ndarray thành Range

Cách chuyển đổi NumPy ndarray thành Range

Cách chuyển đổi NumPy ndarray thành Tên (Phạm vi được đặt tên)

Đôi khi bạn có thể muốn gán một tên có ý nghĩa cho một phạm vi dữ liệu cụ thể trong Excel. Điều này giúp dễ dàng hơn để tham chiếu dữ liệu trong các công thức, biểu đồ hoặc các bảng tính khác. Trong phần này, chúng tôi sẽ chỉ cho bạn cách chuyển đổi NumPy thành Phạm vi Đặt tên trong Excel bằng Python và Aspose.Cells. Bằng cách tạo một phạm vi đặt tên, bạn có thể làm việc với dữ liệu NumPy của mình hiệu quả hơn bên trong Excel.

Làm theo các bước dưới đây để chuyển đổi một ndarray NumPy thành một Dải được đặt tên trong Excel bằng cách sử dụng Aspose.Cells.

  1. Tạo một mảng NumPy trong Python.
  2. Tạo một sổ làm việc mới và truy cập vào bảng tính mục tiêu.
  3. Lặp qua mảng và chèn giá trị vào bảng tính.
  4. Xác định một khoảng bao gồm dữ liệu nhập khẩu.
  5. Gán một cái tên cho phạm vi đó.
  6. Lưu sổ làm việc dưới dạng tệp Excel.

Ví dụ mã sau đây cho thấy cách chèn một mảng NumPy ndarray vào một khoảng tên trong Excel:

import numpy as np
import aspose.cells
from aspose.cells import Workbook, CellsHelper

# Hàm trợ giúp để chèn dữ liệu NumPy vào các ô trong bảng tính
def put_cell_value(cells, raw_value, row, column):
    if isinstance(raw_value, (np.bool_)):
        value = bool(raw_value)
    elif isinstance(raw_value, (np.integer)):
        value = int(raw_value)
    elif isinstance(raw_value, (np.floating)):
        value = float(raw_value)
    elif isinstance(raw_value, (np.datetime64)):
        value = str(np.datetime_as_string(raw_value, unit='D'))
    else:
        value = str(raw_value)
    cells.get(row, column).put_value(value)

def insert_ndarray_into_cells(cells, data, start_row, start_col):
    row_count = data.shape[0]
    col_count = data.shape[1]

   for r in range(row_count):
       for c in range(col_count):
            put_cell_value(cells, data[r][c], start_row + r, start_col + c)

    # Trả về khu vực ô được che phủ
    end_row = start_row + row_count - 1
    end_col = start_col + col_count - 1
    return (start_row, start_col, end_row, end_col)

# ---------------------------
# Main Code
# ---------------------------

# Tạo một mảng NumPy mẫu
data = np.array([
    ['Product', 'Region', 'Sales'],
    ['Laptop', 'East', 1200],
    ['Phone', 'West', 950],
    ['Tablet', 'North', 740]
])

# Tạo một Workbook mới
workbook = Workbook()
worksheet = workbook.worksheets.get(0)
cells = worksheet.cells

# Chèn ndarray vào các ô bắt đầu từ (0,0)
(start_row, start_col, end_row, end_col) = insert_ndarray_into_cells(cells, data, 0, 0)

# Lấy tham chiếu ô Excel
start_cell = CellsHelper.cell_index_to_name(start_row, start_col)
end_cell = CellsHelper.cell_index_to_name(end_row, end_col)

# Tạo một phạm vi có tên cho ndarray này
idx = workbook.worksheets.names.add("SalesData")  # returns index
named_range = workbook.worksheets.names[idx]  # get the Name object
named_range.refers_to = f"={worksheet.name}!{start_cell}:{end_cell}"

# Lưu sổ làm việc
workbook.save("numpy_to_named_range.xlsx")
Cách chuyển đổi NumPy ndarray thành Tên (Phạm vi được đặt tên)

Cách Chuyển Đổi NumPy ndarray thành Tên (Phạm Vi Được Đặt Tên)

Bắt đầu với Aspose.Cells for Python

Bạn bây giờ đã thấy việc chuyển đổi các mảng NumPy thành Excel dễ dàng như thế nào bằng cách sử dụng Aspose.Cells. Thư viện này cho bạn quyền kiểm soát hoàn toàn đối với sổ làm việc, bảng tính, bảng, phạm vi và phạm vi được đặt tên.

Dưới đây là một số liên kết hữu ích để nâng cao hiểu biết của bạn:

Nhận một giấy phép tạm thời miễn phí và bắt đầu sử dụng Aspose.Cells hôm nay để làm cho dữ liệu Python của bạn hoàn toàn tương thích với các quy trình làm việc của Excel.

NumPy to Excel: FAQs

Q1: Tôi có cần cài đặt Microsoft Excel để sử dụng Aspose.Cells không?

Không. Aspose.Cells hoạt động độc lập. Bạn không cần Excel hoặc bất kỳ phần mềm nào khác được cài đặt.

Q2: Aspose.Cells có thể xử lý các mảng NumPy lớn không?

Có. Thư viện được tối ưu hóa cho các tập dữ liệu lớn và hoạt động tốt ngay cả với các mảng lớn.

Q3: Các định dạng Excel nào được hỗ trợ?

Bạn có thể lưu dữ liệu NumPy của mình vào các định dạng bảng tính như XLSX, XLS, CSV, ODS và nhiều định dạng khác.

Q4: Tôi có thể định dạng các ô Excel sau khi xuất dữ liệu NumPy không?

Có. Bạn có thể áp dụng kiểu dáng, định dạng số, công thức, và thậm chí tạo biểu đồ hoặc bảng tổng hợp.

Q5: Có phiên bản miễn phí của Aspose.Cells không?

Vâng. Bạn có thể tải xuống một free trial hoặc yêu cầu một temporary license để thử nghiệm.

Kết luận

NumPy là một công cụ cốt lõi cho khoa học dữ liệu và phân tích số trong Python, nhưng báo cáo thực tế thường yêu cầu Excel. Với Aspose.Cells for Python thông qua .NET, việc chuyển đổi NumPy sang Excel trở nên liền mạch và linh hoạt. Trong hướng dẫn này, chúng tôi đã khám phá các phương pháp khác nhau: xuất mảng NumPy vào một workbook hoàn chỉnh, chèn dữ liệu vào một worksheet, định dạng dưới dạng ListObject (bảng Excel), ánh xạ mảng vào một phạm vi, và gán chúng cho một phạm vi được đặt tên. Mỗi phương pháp phục vụ một mục đích độc đáo. Bằng cách kết hợp sức mạnh của NumPy với sự linh hoạt của Aspose.Cells, bạn có thể di chuyển hiệu quả từ phân tích dựa trên Python sang báo cáo Excel chuyên nghiệp, đảm bảo dữ liệu của bạn dễ truy cập và sẵn sàng cho việc trình bày.

Nếu bạn có bất kỳ câu hỏi nào, xin vui lòng hỏi tại diễn đàn hỗ trợ miễn phí, và chúng tôi sẽ rất vui lòng giúp đỡ.

See Also