以下是一个示例程序,它使用openpyxl库对大型Excel文件进行批量归一化处理,并将结果保存到一个新的Excel文件中。

import openpyxl
from openpyxl.utils import get_column_letter
from openpyxl.styles import Font

# 打开原始Excel文件
wb = openpyxl.load_workbook('input.xlsx')
sheet = wb.active

# 计算每一列的平均值和标准差
means = {}
stds = {}
for col in range(1, sheet.max_column + 1):
    values = []
    for row in range(2, sheet.max_row + 1):
        cell = sheet.cell(row=row, column=col)
        if isinstance(cell.value, (int, float)):
            values.append(cell.value)
    means[col] = sum(values) / len(values)
    stds[col] = (sum([(x - means[col])**2 for x in values]) / len(values))**0.5

# 归一化每个单元格
for col in range(1, sheet.max_column + 1):
    for row in range(2, sheet.max_row + 1):
        cell = sheet.cell(row=row, column=col)
        if isinstance(cell.value, (int, float)):
            cell.value = (cell.value - means[col]) / stds[col]

# 保存结果到新的Excel文件
output_wb = openpyxl.Workbook()
output_sheet = output_wb.active
for col in range(1, sheet.max_column + 1):
    column_letter = get_column_letter(col)
    output_sheet.column_dimensions[column_letter].width = sheet.column_dimensions[column_letter].width
    for row in range(1, sheet.max_row + 1):
        cell = sheet.cell(row=row, column=col)
        output_sheet.cell(row=row, column=col).value = cell.value
        if row == 1:
            output_sheet.cell(row=row, column=col).font = Font(bold=True)

output_wb.save('output.xlsx')

该程序首先打开输入Excel文件并计算每一列的平均值和标准差。然后,它遍历每个单元格并将其归一化。最后,它创建一个新的Excel文件并将归一化后的数据写入其中。新的Excel文件保留与原始文件相同的列宽和字体样式。

python程序使用openpyxl对大型excel文件进行批量归一化处理并储存到一个新的excel文件中

原文地址: http://www.cveoy.top/t/topic/bzvc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录