python程序使用openpyxl对大型excel文件进行批量归一化处理并储存到一个新的excel文件中原始Excel文件中的数据不曾按列排列
以下是一个可能的Python程序示例,它使用openpyxl库来读取原始Excel文件,将数据进行归一化处理,并将结果保存到一个新的Excel文件中:
import openpyxl
from openpyxl.utils import column_index_from_string
from openpyxl.utils.cell import get_column_letter
# 读取原始Excel文件
wb = openpyxl.load_workbook('原始文件.xlsx', data_only=True)
sheet = wb.active
# 获取数据范围
min_row = sheet.min_row
max_row = sheet.max_row
min_col = sheet.min_column
max_col = sheet.max_column
# 构建一个字典,用于存储每列的最小值和最大值
col_ranges = {}
for col in range(min_col, max_col + 1):
col_letter = get_column_letter(col)
values = [sheet.cell(row=row, column=col).value for row in range(min_row, max_row + 1) if sheet.cell(row=row, column=col).value is not None]
if len(values) > 0:
col_ranges[col_letter] = {'min': min(values), 'max': max(values)}
# 归一化处理
for col in range(min_col, max_col + 1):
col_letter = get_column_letter(col)
if col_letter in col_ranges:
col_min = col_ranges[col_letter]['min']
col_max = col_ranges[col_letter]['max']
for row in range(min_row, max_row + 1):
cell = sheet.cell(row=row, column=col)
if cell.value is not None:
cell.value = (cell.value - col_min) / (col_max - col_min)
# 将结果保存到新的Excel文件中
new_wb = openpyxl.Workbook()
new_sheet = new_wb.active
for row in range(min_row, max_row + 1):
for col in range(min_col, max_col + 1):
new_sheet.cell(row=row, column=col).value = sheet.cell(row=row, column=col).value
new_wb.save('归一化结果.xlsx')
这个程序首先读取原始Excel文件,并获取数据范围。然后,它使用一个字典来存储每列的最小值和最大值,以便进行归一化处理。接着,它遍历每个单元格,将值归一化到0到1的范围内。最后,它将结果保存到一个新的Excel文件中。这个程序假设数据不曾按列排列,因此它会自动处理每列的最小值和最大值。但是,如果数据已经按列排列,那么可以使用openpyxl的min_col和max_col参数来指定数据范围。
原文地址: https://www.cveoy.top/t/topic/bzHS 著作权归作者所有。请勿转载和采集!