Convertir NumPy a Excel
Introducción a NumPy
NumPy (Numerical Python) es una extensión de cálculo numérico de código abierto de Python. Esta herramienta se puede utilizar para almacenar y procesar matrices grandes, que es mucho más eficiente que la estructura de listas anidadas de Python (que también se puede utilizar para representar matrices). Admite una gran cantidad de matrices dimensionales y operaciones de matrices, y también proporciona una gran cantidad de bibliotecas de funciones matemáticas para operaciones de matriz.
Las principales funciones de NumPy:
- Ndarray, un objeto de matriz multidimensional, es una estructura de datos rápida, flexible y que ahorra espacio.
- Operaciones de álgebra lineal, incluyendo multiplicación de matrices, transposición, inversión, etc.
- Transformada de Fourier, realizando una transformada rápida de Fourier en una matriz.
- Operación rápida de matrices de punto flotante.
- Integrar código en lenguaje C en Python para que se ejecute más rápido.
Usando la API Aspose.Cells for Python via .NET, puedes convertir la matriz NumPy a Excel, OpenOffice, Pdf, Json y muchos otros formatos diferentes.
Cómo convertir la matriz NumPy a Libro de Excel
Aquí tienes un ejemplo de código para demostrar cómo importar datos de una matriz NumPy a un archivo de Excel utilizando Aspose.Cells for Python via .NET:
- Cree un array de NumPy de muestra.
- Recorra el array de NumPy e importe los datos usando Aspose.Cells para Python via .NET.
import numpy as np | |
import pandas as pd | |
import aspose.cells | |
from aspose.cells import Workbook, Worksheet, Range, CellsHelper | |
def put_cell_value(cells, raw_value, row , column): | |
cell = cells.get(row , column) | |
dtype = type(raw_value) | |
match dtype: | |
case np.bool_ : | |
value = bool(raw_value) | |
case np.int_ : | |
value = int(raw_value) | |
case np.intc : | |
value = int(raw_value) | |
case np.intp : | |
value = int(raw_value) | |
case np.int8 : | |
value = int(raw_value) | |
case np.int16 : | |
value = int(raw_value) | |
case np.int32 : | |
value = int(raw_value) | |
case np.int64 : | |
value = int(raw_value) | |
case np.uint8 : | |
value = int(raw_value) | |
case np.uint16 : | |
value = int(raw_value) | |
case np.uint32 : | |
value = int(raw_value) | |
case np.uint64 : | |
value = int(raw_value) | |
case np.float_: | |
value = int(raw_value) | |
case np.float16: | |
value = float(raw_value) | |
case np.float32: | |
value = float(raw_value) | |
case np.float64: | |
value = float(raw_value) | |
case np.single: | |
value = float(raw_value) | |
case np.double: | |
value = float(raw_value) | |
case np.datetime64 : | |
ts = pd.to_datetime(str(raw_value)) | |
value = ts.strftime('%Y.%m.%d') | |
case _: | |
value = raw_value | |
cell.put_value(value) | |
pass | |
def import_table_data_into_cells(cells,table_data,row_index,column_index,is_vertical): | |
table_row_index = row_index | |
table_column_index = column_index | |
row_count = len( table_data) | |
column_count = 0 | |
for table_row in table_data: | |
for table_cell in table_row: | |
column_count =len( table_row) | |
put_cell_value(cells,table_cell,table_row_index,table_column_index) | |
if is_vertical : | |
table_row_index = table_row_index + 1 | |
else: | |
table_column_index = table_column_index + 1 | |
if is_vertical : | |
table_row_index = row_index | |
table_column_index = table_column_index + 1 | |
else: | |
table_column_index = column_index | |
table_row_index = table_row_index + 1 | |
if is_vertical : | |
end_row_index = row_index + row_count - 1 | |
end_column_index = table_column_index - 1 | |
else: | |
end_row_index = table_row_index - 1 | |
end_column_index = column_index + column_count - 1 | |
return (row_index,column_index,end_row_index,end_column_index) | |
excel_data = np.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]]] ) | |
# Create a new Aspose.Cells Workbook | |
workbook = Workbook() | |
begin_row_index = 0 | |
begin_column_index = 0 | |
is_vertical = False | |
sheet_index = 1 | |
for table_data in excel_data: | |
curr_sheet = workbook.worksheets.add("Sheet_data_" + str(sheet_index)) | |
curr_cells = curr_sheet.cells | |
import_table_data_into_cells(curr_cells , table_data , begin_row_index,begin_column_index,is_vertical) | |
sheet_index += 1 | |
workbook.save("out.xlsx") |
El resultado de la salida:
Cómo convertir la matriz NumPy a Hoja de Cálculo
Aquí tienes un ejemplo de código para demostrar cómo importar datos de una matriz NumPy a un archivo de Excel utilizando Aspose.Cells for Python via .NET:
- Cree un array de NumPy de muestra.
- Recorra el array de NumPy e importe los datos usando Aspose.Cells para Python via .NET.
import numpy as np | |
import pandas as pd | |
import aspose.cells | |
from aspose.cells import Workbook, Worksheet, Range, CellsHelper | |
def put_cell_value(cells, raw_value, row , column): | |
cell = cells.get(row , column) | |
dtype = type(raw_value) | |
match dtype: | |
case np.bool_ : | |
value = bool(raw_value) | |
case np.int_ : | |
value = int(raw_value) | |
case np.intc : | |
value = int(raw_value) | |
case np.intp : | |
value = int(raw_value) | |
case np.int8 : | |
value = int(raw_value) | |
case np.int16 : | |
value = int(raw_value) | |
case np.int32 : | |
value = int(raw_value) | |
case np.int64 : | |
value = int(raw_value) | |
case np.uint8 : | |
value = int(raw_value) | |
case np.uint16 : | |
value = int(raw_value) | |
case np.uint32 : | |
value = int(raw_value) | |
case np.uint64 : | |
value = int(raw_value) | |
case np.float_: | |
value = int(raw_value) | |
case np.float16: | |
value = float(raw_value) | |
case np.float32: | |
value = float(raw_value) | |
case np.float64: | |
value = float(raw_value) | |
case np.single: | |
value = float(raw_value) | |
case np.double: | |
value = float(raw_value) | |
case np.datetime64 : | |
ts = pd.to_datetime(str(raw_value)) | |
value = ts.strftime('%Y.%m.%d') | |
case _: | |
value = raw_value | |
cell.put_value(value) | |
pass | |
def import_table_data_into_cells(cells,table_data,row_index,column_index,is_vertical): | |
table_row_index = row_index | |
table_column_index = column_index | |
row_count = len( table_data) | |
column_count = 0 | |
for table_row in table_data: | |
for table_cell in table_row: | |
column_count =len( table_row) | |
put_cell_value(cells,table_cell,table_row_index,table_column_index) | |
if is_vertical : | |
table_row_index = table_row_index + 1 | |
else: | |
table_column_index = table_column_index + 1 | |
if is_vertical : | |
table_row_index = row_index | |
table_column_index = table_column_index + 1 | |
else: | |
table_column_index = column_index | |
table_row_index = table_row_index + 1 | |
if is_vertical : | |
end_row_index = row_index + row_count - 1 | |
end_column_index = table_column_index - 1 | |
else: | |
end_row_index = table_row_index - 1 | |
end_column_index = column_index + column_count - 1 | |
return (row_index,column_index,end_row_index,end_column_index) | |
# Create a sample NumPy array | |
data = np.array([['City', 'Region', 'Store'], ['Chicago', 'Central', 3055], ['New York', 'East', 3036], ['Detroit', 'Central', 3074]]) | |
# Create a new Aspose.Cells Workbook | |
workbook = Workbook() | |
# Access the first (default) worksheet | |
worksheet = workbook.worksheets[0] | |
# Get the cells | |
cells = worksheet.cells | |
begin_row_index = 0 | |
begin_column_index = 0 | |
is_vertical = False | |
import_table_data_into_cells(cells , data , begin_row_index,begin_column_index,is_vertical) | |
workbook.save("out.xlsx") |
El resultado de la salida:
Cómo convertir la matriz NumPy a ListObject
Aquí tienes un ejemplo de código para demostrar cómo importar datos de una matriz NumPy a un objeto ListObject utilizando Aspose.Cells for Python via .NET:
- Cree un array de NumPy de muestra.
- Recorra el array de NumPy e importe los datos usando Aspose.Cells para Python via .NET.
- Crear un objeto ListObject utilizando datos de muestra.
import numpy as np | |
import pandas as pd | |
import aspose.cells | |
from aspose.cells import Workbook, Worksheet, Range, CellsHelper | |
def put_cell_value(cells, raw_value, row , column): | |
cell = cells.get(row , column) | |
dtype = type(raw_value) | |
match dtype: | |
case np.bool_ : | |
value = bool(raw_value) | |
case np.int_ : | |
value = int(raw_value) | |
case np.intc : | |
value = int(raw_value) | |
case np.intp : | |
value = int(raw_value) | |
case np.int8 : | |
value = int(raw_value) | |
case np.int16 : | |
value = int(raw_value) | |
case np.int32 : | |
value = int(raw_value) | |
case np.int64 : | |
value = int(raw_value) | |
case np.uint8 : | |
value = int(raw_value) | |
case np.uint16 : | |
value = int(raw_value) | |
case np.uint32 : | |
value = int(raw_value) | |
case np.uint64 : | |
value = int(raw_value) | |
case np.float_: | |
value = int(raw_value) | |
case np.float16: | |
value = float(raw_value) | |
case np.float32: | |
value = float(raw_value) | |
case np.float64: | |
value = float(raw_value) | |
case np.single: | |
value = float(raw_value) | |
case np.double: | |
value = float(raw_value) | |
case np.datetime64 : | |
ts = pd.to_datetime(str(raw_value)) | |
value = ts.strftime('%Y.%m.%d') | |
case _: | |
value = raw_value | |
cell.put_value(value) | |
pass | |
def import_table_data_into_cells(cells,table_data,row_index,column_index,is_vertical): | |
table_row_index = row_index | |
table_column_index = column_index | |
row_count = len( table_data) | |
column_count = 0 | |
for table_row in table_data: | |
for table_cell in table_row: | |
column_count =len( table_row) | |
put_cell_value(cells,table_cell,table_row_index,table_column_index) | |
if is_vertical : | |
table_row_index = table_row_index + 1 | |
else: | |
table_column_index = table_column_index + 1 | |
if is_vertical : | |
table_row_index = row_index | |
table_column_index = table_column_index + 1 | |
else: | |
table_column_index = column_index | |
table_row_index = table_row_index + 1 | |
if is_vertical : | |
end_row_index = row_index + row_count - 1 | |
end_column_index = table_column_index - 1 | |
else: | |
end_row_index = table_row_index - 1 | |
end_column_index = column_index + column_count - 1 | |
return (row_index,column_index,end_row_index,end_column_index) | |
# Create a sample NumPy array | |
data = np.array([['City', 'Region', 'Store'], ['Chicago', 'Central', 3055], ['New York', 'East', 3036], ['Detroit', 'Central', 3074]]) | |
# Create a new Aspose.Cells Workbook | |
workbook = Workbook() | |
# Access the first (default) worksheet | |
worksheet = workbook.worksheets[0] | |
# Get the cells | |
cells = worksheet.cells | |
begin_row_index = 0 | |
begin_column_index = 0 | |
is_vertical = False | |
# ndarray to listobject | |
(begin_row_index,begin_column_index,end_row_index,end_column_index) = import_table_data_into_cells(cells , data , begin_row_index,begin_column_index,is_vertical) | |
start_cell = CellsHelper.cell_index_to_name(begin_row_index, begin_column_index) | |
end_cell = CellsHelper.cell_index_to_name(end_row_index, end_column_index) | |
index = worksheet.list_objects.add(start_cell, end_cell,True) | |
workbook.save("out.xlsx") |
El resultado de la salida:
Cómo convertir NumPy ndarray a rango
Aquí hay un ejemplo de fragmento de código para demostrar cómo importar datos de un array de NumPy a un rango usando Aspose.Cells para Python via .NET:
- Cree un array de NumPy de muestra.
- Recorra el array de NumPy e importe los datos usando Aspose.Cells para Python via .NET.
- Cree un objeto de rango usando datos de muestra.
import numpy as np | |
import pandas as pd | |
import aspose.cells | |
from aspose.cells import Workbook, Worksheet, Range, CellsHelper | |
def put_cell_value(cells, raw_value, row , column): | |
cell = cells.get(row , column) | |
dtype = type(raw_value) | |
match dtype: | |
case np.bool_ : | |
value = bool(raw_value) | |
case np.int_ : | |
value = int(raw_value) | |
case np.intc : | |
value = int(raw_value) | |
case np.intp : | |
value = int(raw_value) | |
case np.int8 : | |
value = int(raw_value) | |
case np.int16 : | |
value = int(raw_value) | |
case np.int32 : | |
value = int(raw_value) | |
case np.int64 : | |
value = int(raw_value) | |
case np.uint8 : | |
value = int(raw_value) | |
case np.uint16 : | |
value = int(raw_value) | |
case np.uint32 : | |
value = int(raw_value) | |
case np.uint64 : | |
value = int(raw_value) | |
case np.float_: | |
value = int(raw_value) | |
case np.float16: | |
value = float(raw_value) | |
case np.float32: | |
value = float(raw_value) | |
case np.float64: | |
value = float(raw_value) | |
case np.single: | |
value = float(raw_value) | |
case np.double: | |
value = float(raw_value) | |
case np.datetime64 : | |
ts = pd.to_datetime(str(raw_value)) | |
value = ts.strftime('%Y.%m.%d') | |
case _: | |
value = raw_value | |
cell.put_value(value) | |
pass | |
def import_table_data_into_cells(cells,table_data,row_index,column_index,is_vertical): | |
table_row_index = row_index | |
table_column_index = column_index | |
row_count = len( table_data) | |
column_count = 0 | |
for table_row in table_data: | |
for table_cell in table_row: | |
column_count =len( table_row) | |
put_cell_value(cells,table_cell,table_row_index,table_column_index) | |
if is_vertical : | |
table_row_index = table_row_index + 1 | |
else: | |
table_column_index = table_column_index + 1 | |
if is_vertical : | |
table_row_index = row_index | |
table_column_index = table_column_index + 1 | |
else: | |
table_column_index = column_index | |
table_row_index = table_row_index + 1 | |
if is_vertical : | |
end_row_index = row_index + row_count - 1 | |
end_column_index = table_column_index - 1 | |
else: | |
end_row_index = table_row_index - 1 | |
end_column_index = column_index + column_count - 1 | |
return (row_index,column_index,end_row_index,end_column_index) | |
# Create a sample NumPy array | |
data = np.array([['City', 'Region', 'Store'], ['Chicago', 'Central', 3055], ['New York', 'East', 3036], ['Detroit', 'Central', 3074]]) | |
# Create a new Aspose.Cells Workbook | |
workbook = Workbook() | |
# Access the first (default) worksheet | |
worksheet = workbook.worksheets[0] | |
# Get the cells | |
cells = worksheet.cells | |
begin_row_index = 0 | |
begin_column_index = 0 | |
is_vertical = False | |
# ndarray to range | |
(begin_row_index,begin_column_index,end_row_index,end_column_index) = import_table_data_into_cells(cells , data , begin_row_index,begin_column_index,is_vertical) | |
start_cell = CellsHelper.cell_index_to_name(begin_row_index, begin_column_index) | |
end_cell = CellsHelper.cell_index_to_name(end_row_index, end_column_index) | |
range_obj = cells.create_range(start_cell, end_cell) | |
print("row count: " + str(range_obj.row_count)) | |
print("column count: " + str(range_obj.column_count)) | |
workbook.save("out.xlsx") |
El resultado de la salida:
row count: 4
column count: 3
Cómo convertir NumPy ndarray a nombre
Aquí hay un ejemplo de fragmento de código para demostrar cómo importar datos de un array de NumPy a un nombre usando Aspose.Cells para Python via .NET:
- Cree un array de NumPy de muestra.
- Recorra el array de NumPy e importe los datos usando Aspose.Cells para Python via .NET.
- Cree un objeto de nombre usando datos de muestra.
import numpy as np | |
import pandas as pd | |
import aspose.cells | |
from aspose.cells import Workbook, Worksheet, Range, CellsHelper | |
def put_cell_value(cells, raw_value, row , column): | |
cell = cells.get(row , column) | |
dtype = type(raw_value) | |
match dtype: | |
case np.bool_ : | |
value = bool(raw_value) | |
case np.int_ : | |
value = int(raw_value) | |
case np.intc : | |
value = int(raw_value) | |
case np.intp : | |
value = int(raw_value) | |
case np.int8 : | |
value = int(raw_value) | |
case np.int16 : | |
value = int(raw_value) | |
case np.int32 : | |
value = int(raw_value) | |
case np.int64 : | |
value = int(raw_value) | |
case np.uint8 : | |
value = int(raw_value) | |
case np.uint16 : | |
value = int(raw_value) | |
case np.uint32 : | |
value = int(raw_value) | |
case np.uint64 : | |
value = int(raw_value) | |
case np.float_: | |
value = int(raw_value) | |
case np.float16: | |
value = float(raw_value) | |
case np.float32: | |
value = float(raw_value) | |
case np.float64: | |
value = float(raw_value) | |
case np.single: | |
value = float(raw_value) | |
case np.double: | |
value = float(raw_value) | |
case np.datetime64 : | |
ts = pd.to_datetime(str(raw_value)) | |
value = ts.strftime('%Y.%m.%d') | |
case _: | |
value = raw_value | |
cell.put_value(value) | |
pass | |
def import_table_data_into_cells(cells,table_data,row_index,column_index,is_vertical): | |
table_row_index = row_index | |
table_column_index = column_index | |
row_count = len( table_data) | |
column_count = 0 | |
for table_row in table_data: | |
for table_cell in table_row: | |
column_count =len( table_row) | |
put_cell_value(cells,table_cell,table_row_index,table_column_index) | |
if is_vertical : | |
table_row_index = table_row_index + 1 | |
else: | |
table_column_index = table_column_index + 1 | |
if is_vertical : | |
table_row_index = row_index | |
table_column_index = table_column_index + 1 | |
else: | |
table_column_index = column_index | |
table_row_index = table_row_index + 1 | |
if is_vertical : | |
end_row_index = row_index + row_count - 1 | |
end_column_index = table_column_index - 1 | |
else: | |
end_row_index = table_row_index - 1 | |
end_column_index = column_index + column_count - 1 | |
return (row_index,column_index,end_row_index,end_column_index) | |
# Create a sample NumPy array | |
data = np.array([['City', 'Region', 'Store'], ['Chicago', 'Central', 3055], ['New York', 'East', 3036], ['Detroit', 'Central', 3074]]) | |
# Create a new Aspose.Cells Workbook | |
workbook = Workbook() | |
# Access the first (default) worksheet | |
worksheet = workbook.worksheets[0] | |
# Get the cells | |
cells = worksheet.cells | |
begin_row_index = 0 | |
begin_column_index = 0 | |
is_vertical = False | |
# ndarray to Name | |
(begin_row_index,begin_column_index,end_row_index,end_column_index) = import_table_data_into_cells(cells , data , begin_row_index,begin_column_index,is_vertical) | |
start_cell = CellsHelper.cell_index_to_name(begin_row_index, begin_column_index) | |
end_cell = CellsHelper.cell_index_to_name(end_row_index, end_column_index) | |
name_text = "Name_test" | |
name_refers_to = "=" + worksheet.name + "!$" + start_cell + ":$" + end_cell | |
name_index = worksheet.workbook.worksheets.names.add(name_text); | |
name = worksheet.workbook.worksheets.names[name_index] | |
name.refers_to = name_refers_to | |
workbook.save("out.xlsx") |
El resultado de la salida: