如何在不改变结果的前提下为Python回归代码添加sys.argv?
给OLS回归代码添加sys.argv的实现方案
首先,sys.argv是Python用来获取命令行运行参数的列表:
sys.argv[0]是当前运行的脚本文件名sys.argv[1]及以后是你在命令行输入的额外参数
针对你的需求,我们可以把固定的CSV文件名改成通过命令行传入,这样既用到sys.argv,又不会改变原代码的输出结果(只要传入正确的文件名就行)。
修改后的代码
import pandas as pd import statsmodels.api as sm import sys # 导入sys模块 # 处理命令行参数:如果传入了文件名就用传入的,没传就用默认的'german_credit_data.csv' if len(sys.argv) >= 2: csv_file = sys.argv[1] else: csv_file = 'german_credit_data.csv' df = pd.read_csv(csv_file) df.rename(columns = {"Credit amount":"Credit_amount"}, inplace = True) df = df[['Credit_amount','Age','Duration']] X = df[['Age','Duration']] Y = df[['Credit_amount']] X = sm.add_constant(X) model = sm.OLS(Y, X).fit() print(model.params.round(2)) print(model.rsquared.round(2))
运行方式
- 把代码保存为
regression.py - 在命令行运行:
- 如果用默认文件名,直接输入:
python regression.py,结果和原代码完全一致 - 如果要指定其他同格式CSV文件,输入:
python regression.py your_data.csv
- 如果用默认文件名,直接输入:
关键说明
- 保留了默认文件名,即使不传参数,代码也能和原来一样正常运行
- 通过
len(sys.argv)判断参数数量,避免因未传参数导致索引错误 - 修改后代码灵活性提升,同时完全不影响原有输出结果
内容的提问来源于stack exchange,提问作者MCly
相关产品推荐
相关产品推荐

