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)。这与我要问的内容无关,但是想给出一些关于我为什么追求这个的背景信息。
答案 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")