2017-01-18 8 views
0

によってPythonはこれは、ソースデータパンダのデータフレームDFである線形回帰ループに基づいて、私はPythonのパンダのデータフレームの列を作成したいグループ

を線形回帰予測パンダのデータフレームを作成します。私がしたい

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つの列「グループ」とその隣の予測値でデータフレームを得ることはありません。

ありがとうございました!

答えて

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

関連する問題