python - 从函数返回多个值时,有没有办法保留 pandas 数据帧的网格输出?

标签 python pandas statsmodels

全部,

当从函数返回多个值时,有没有办法保持 pandas 数据框或 statsmodels 回归摘要的网格显示?

def lr(x,y,df):
    x=sm.add_constant(x)
    est=sm.OLS(y,x)
    est=est.fit()
    return (df.corr(),
            print('\n'),
            print('\n'),
            est.summary())

以上面的函数为例。如果我只是返回 df.corr() ,它将保留查看 pandas 数据帧时通常出现的网格。如果我只返回 est.summary(),结果相同。然而,当我想同时返回时,它们就变得不那么美观了。我也尝试将它们都放入 print() 中并得到相同的结果。请帮忙!

编辑:

def lr(x,y,df):
x=sm.add_constant(x)
est=sm.OLS(y,x)
est=est.fit()
return (HTML(df.corr()._repr_html_()),
        HTML(est.summary()._repr_html_()))

返回(IPython.core.display.HTML 对象,IPython.core.display.HTML 对象)

def lr(x,y,df):
x=sm.add_constant(x)
est=sm.OLS(y,x)
est=est.fit()
return (HTML(df.corr()._repr_html_() + est.summary()._repr_html_()))

给出了下面我的评论中列出的错误

谢谢!

最佳答案

df.corr()est.summary() 均返回 DataFrame 对象。

当函数仅返回一个时,Jupyter 通过运行底层方法 _repr_html_ 来显示该对象,该方法返回漂亮的 html 表的文本,然后显示它。您可以通过以下方式执行相同的操作:

from IPython.core.display import HTML

HTML(df.corr()._repr_html_())

但是,当您将它们都包装在元组中返回时,Jupyter 在元组上运行 _repr_ 方法,该方法仅返回格式不正确的文本。如果您从函数中进行了分配:

my_results = lr(x, y, df)

my_results[0]

你会再次获得漂亮的格式。或者:

my_results[1]

格式也很漂亮。要同时获得两者,请执行以下操作:

from IPython.core.display import HTML

HTML(df.corr()._repr_html_() + est.summary()._repr_html_())

关于python - 从函数返回多个值时,有没有办法保留 pandas 数据帧的网格输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37301682/

相关文章:

python - 将列数据从 pandas df 传递到 Bokeh 绘图函数

python - 将一小时内的每个值分组为一个值,这就是它的平均值

python - Statsmodels OLS回归: Log-likelihood,用途和解释

python - statsmodels ARIMA 结果与原始数据的比较

python - 仅当 diff 有某些内容时才输出

python - 将 pandas DataFrame 转换为没有额外列的记录数组

python - MySQL 5.6 中的全局查询超时

python - 拆分单元格值并更新现有列

python - scikit-learn 和 statsmodels - 哪个 R 平方是正确的?

python - 如何生成最大步长为 1 的所有非递减序列?