如何以Excel工作表名命名并存储各表对应的线性回归多项式函数
解决方案
你遇到的核心问题是循环内的临时变量会被后续迭代覆盖,直接赋值给循环变量df无法持久化存储多份结果,推荐使用字典存储每个工作表对应的回归函数,天然匹配工作表名到函数的映射关系,实现代码如下:
import pandas as pd import numpy as np # 读取所有工作表,返回格式为 {工作表名: 对应DataFrame} 的字典 dfs = pd.read_excel(r'Prod.xlsx', sheet_name=None) # 初始化存储回归函数的字典 reg_funcs = {} for sheet_name, df in dfs.items(): # 拟合一阶多项式 poly_coef = np.polyfit(df['P'], df['Q'], 1) # 生成多项式函数并存入字典,键为工作表名称 reg_funcs[sheet_name] = np.poly1d(poly_coef)
使用方式
之后你可以直接通过工作表名称调用对应的回归函数,比如工作表名为2023年生产数据的话,调用方式如下:
# 传入自变量x计算预测值 y_pred = reg_funcs['2023年生产数据'](10)
如果你确实需要将函数作为独立的全局变量使用(不推荐,灵活度和可维护性远低于字典方案),可以通过操作globals()字典实现:
for sheet_name, df in dfs.items(): poly_coef = np.polyfit(df['P'], df['Q'], 1) # 直接将函数注册为全局变量,变量名为工作表名 globals()[sheet_name] = np.poly1d(poly_coef)
之后可以直接用工作表名作为函数名调用:
y_pred = 2023年生产数据(10)
注意:如果工作表名包含特殊字符、空格或者不符合Python变量命名规则的字符,直接作为变量名调用会报错,更推荐使用字典存储的方案
内容的提问来源于stack exchange,提问作者samhar
相关产品推荐
相关产品推荐

