所有
从函数返回多个值时,有没有办法保持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_()))
给出了我在下面评论中列出的错误
谢谢!
答案 0 :(得分:2)
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_())