将预测附加到新数据框架

时间:2017-05-25 04:07:09

标签: python pandas regression data-science

Data example (not real data) can be also seen here我的数据集为3x500,列名为:作业级别(数字),作业代码(分类)和库存值(数字)。我使用线性回归来拟合基于工作级别的股票价值,按工作代码分组。 例如:

职务代码职位职位职位股票价值

20 1生产工程师

20 2生产工程师

20 3生产工程师6,985

20 4生产工程师7,852

20 5生产工程师

30 1生产工程师

30 2物流分析师

30 3物流分析师4,962

30 4物流分析师22,613

30 5物流分析师31,689

40 1物流分析师

这就是我所做的。如何查看添加了预测值的数据集列(原始数据)。现在我只能看到预测。我无法加入他们,因为:

情况如下:当我第一次启动我的代码时,我的df_nonull.shape =(268,4)然后在for循环之后我的df_nonull.shape =(4,4)然后是df_results。形状=(89,2)。结果,我无法加入他们。

> import pandas as pd from sklearn.linear_model import LinearRegression
> df = pd.read_excel("stats.xlsx")
> df_nonull=df.dropna()
> 
> model= LinearRegression() groups = [] results = [] level = []
> 
> for (group, df_nonull) in df_nonull.groupby('Job Code'):
>     X=df_nonull[['Job Level']]
>     y=df_nonull[['Stock Value']]
>     model.fit(X,y)
>     coefs = list(zip(X.columns, model.coef_))
>     results.append(model.predict(735947)[0])
>     groups.append(group)
> 
> df_results = pd.DataFrame({'Job Code':groups, 'prediction':results})
> 
> print df_results.head(50)

仅供参考,我的主要目标是在没有NaN(df_nonull)的数据集中运行回归模型,并将线性回归系数应用于整个数据(对于股票价值,y)(df)。这与我要问的内容无关,但是想给出一些关于我为什么追求这个的背景信息。

2 个答案:

答案 0 :(得分:0)

假设输入数据和预测系列具有一致的索引。我认为你需要的是pd.concat

import pandas as pd

>>> X = pd.DataFrame({'input': [i for i in range(10)]}) ## fake input data
>>> pred = pd.DataFrame({'prediction':[i-5 for i in range(10)]}) ## fake prediction data
>>> pd.concat([X, pred], axis=1)
   input  prediction
0      0          -5
1      1          -4
2      2          -3
3      3          -2
4      4          -1
5      5           0
6      6           1
7      7           2
8      8           3
9      9           4

我会在concatenation上专门推荐大熊猫(0.20.1)。

答案 1 :(得分:0)

您可以使用以下命令创建一个包含数据集值和预测值的单个数据框。

df_nonull.join(df_results,how="outer")