python函数多重返回

2024-05-23 14:04:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将此代码转换为一个函数:

variables = ['oki']              
for var in variables:
    lm_full = sm.formula.ols(formula='%s ~  diag + age + ICVcm3' % var, data=dfwo2).fit()
    print("===============================================================================")
    print("           formule = %s ~ diag + age + ICVcm3" % var)
    print("===============================================================================")
    print(lm_full.summary())   

最后我想要的是:

function(oki,diag,age,ICVcm3,dfwo2)返回循环结果。你知道吗

我不知道怎么做。我在网上找到的例子都是很基本的。。。。我甚至不知道在谷歌上输入什么才能得到答案。你知道吗


Tags: 函数代码inforagevarvariablesfull
3条回答

这段代码向您展示了如何返回在函数中计算的项,以及如何在调用函数中检索它们。注意,您可以返回任意多或任意少的项,即使函数返回调用代码不需要的项,您也可以忽略它们。(这就是名为dummy的变量的用途)

我使用的是statsmodels附带的一个数据集,因为我无法识别您使用的数据集。你知道吗

import statsmodels as sm
df = sm.datasets.get_rdataset("Guerry", "HistData").data
df = df[['Lottery', 'Literacy', 'Wealth', 'Region']].dropna()
import statsmodels.formula.api as smf

def regress(variables):
    results = [ ]
    for variable in variables:
        mod = smf.ols(formula='Lottery ~ %s' % variable, data=df)
        result = mod.fit()
        results . append ( (variable, result.params, result.df_resid, result.rsquared) )
    return results

for result in regress (['Literacy', 'Wealth', 'Region']):
    variable, dummy, dummy, R_squared = result
    print ( variable, R_squared  )

结果如下:

Literacy 0.145720612937
Wealth 0.243180384656
Region 0.142107524677

可以返回元组列表:

def myFunction(variables):
    result = []
    for var in variables:
        formula = "           formule = %s ~ diag + age + ICVcm3" % var
        lm_full = sm.formula.ols(formula=formula, data=dfwo2).fit()
        result.append((formula, lm_full.summary()))
    return result

您的循环是变量中的var,它只包含一个项:一个字符串。 那么,这样一个循环的目的是什么呢?diag,age,ICVcm3,dfwo2这些值在哪里?函数是关于什么的?似乎是一个非常特别的话题。你知道吗

尽管只是猜测,像这样的东西可能是你一直在寻找的:

def myfunction(variables,diag,age,ICVcm3,dfwo2):   
    for var in variables:
        lm_full = sm.formula.ols(formula='%s ~  diag + age + ICVcm3' % var, data=dfwo2).fit()
        print("===============================================================================")
        print("           formule = %s ~ diag + age + ICVcm3" % var)
        print("===============================================================================")
        print(lm_full.summary())

相关问题 更多 >