擅长:python、mysql、java
<p>因此,我不知道为什么截距值不同(可能我犯了个错误,或者您的给定数据不是您希望处理的完整数据),但我建议您将<a href="https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.polyfit.html" rel="nofollow noreferrer">^{<cd1>}</a>或您选择的工具(<a href="http://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html" rel="nofollow noreferrer">scikit-learn</a>,<a href="https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.linregress.html" rel="nofollow noreferrer">scipy.stats.linregress</a>,…)与groupby和apply结合使用:</p>
<pre><code>In [25]: df.groupby("SysNr").apply(lambda g: np.polyfit(g.RegnskabsAar, g.res_f_r, 1))
Out[25]:
SysNr
1 [49999.99999999048, -100349999.99998075]
2 [-49999.99999999045, 101049999.99998072]
dtype: object
</code></pre>
<p>之后,美化它:</p>
^{pr2}$
<h2>编辑:</h2>
<p>因为您在评论中询问了另一个答案,即如何处理某些<code>SysNr</code>的缺失年份:
只需删除<code>NaNs</code>即可获得有效的线性回归。当然,你也可以根据你想要达到的目标,用平均值来填充它们,但在我看来,这并没有什么帮助。在</p>
<p>如果实体只有一年的数据,就不能对其进行有效的线性回归。但是你可以(如果你想并且这适合你的情况,如果需要的话,请提供更多关于数据的信息)以某种方式外推其他实体的斜率并计算截距。当然,你必须对实体的斜率分布做一些假设(例如线性的,那么sysnr3的斜率是<code>-150000.0</code>)。在</p>