2017-01-18 46 views
0

線性迴歸預測熊貓數據幀我想基於線性迴歸環路Python的創建由

創建蟒大熊貓數據幀列這是源數據大熊貓數據幀DF:

campaign |  date  | shown 
    A   2015-10-11  363563 
    A   2015-10-12  345657 
    A   2015-10-13  345346 
    B   2015-10-11  23467 
    B   2015-10-15  357990 
    C   2015-10-11  97808 

欲用戶線性迴歸和每個組預測2015-11-30顯示的金額。

所以這就是我要尋找的最後一個新的預測數據幀:

campaign | Prediction(2015-11-30) 
     A   ... 
     B   ... 
     C   ... 

到目前爲止我的代碼:

df['date_ordinal'] = df['date'].apply(lambda x: x.toordinal()) 
model = LinearRegression() 
X = df[['date_ordinal']] 
y = df.shown 
model.fit(X, y) 

df_results = pd.DataFrame() 
for (group, df_gp) in df.groupby('campaign'): 
    df_results['campaign'] = group 
    X=df_gp[['date_ordinal']] 
    y=df_gp.shown 
    model.fit(X,y) 
    coefs = list(zip(X.columns, model.coef_)) 
    df_results['prediction'] = model.predict(735947) 

df_results 

然而,當我運行此代碼,我只得到一個預測,我沒有得到帶有一列「組」和其旁邊的預測值的數據幀。

謝謝!

回答

1

試試這個:

groups = [] 
results = [] 
for (group, df_gp) in df.groupby('campaign'): 
    X=df_gp[['date_ordinal']] 
    y=df_gp.shown 
    model.fit(X,y) 
    coefs = list(zip(X.columns, model.coef_)) 
    results.append(model.predict(735947)[0]) 
    groups.append(group) 

df_results = pd.DataFrame({'campaign':groups, 'prediction':results}) 

據此間回答:add one row in a pandas.DataFrame添加行逐個是不是最有效的解決方案。正如你在anwers中看到的那樣,必須在索引處插入數據。

+0

PERFECT !!!!!!!!!!!!!!!!!!!!!!!!!!謝謝 – jeangelj