2017-02-08 11 views
1

вот пример моей dataframe ДФ:Регресс группой в панд dataframe и добавить столбцы со значениями прогноза и бета/T-статистика

Category Y     X1  X2 
0 Apple 0.083050996 0.164056482 0.519875358 
1 Apple 0.411044939 0.774160332 0.002869499 
2 Apple 0.524315907 0.422193005 0.97720091 
3 Apple 0.721124638 0.645927536 0.750210715 
4 Berry 0.134488729 0.299288214 0.522933484 
5 Berry 0.733162132 0.608742944 0.957595544 
6 Berry 0.113051075 0.641533175 0.19799635 
7 Berry 0.275379123 0.249143751 0.049082766 
8 Carrot 0.588121494 0.750480977 0.615399987 
9 Carrot 0.878221581 0.021366296 0.069184879 

Теперь я хочу код, чтобы иметь возможность сделать регрессии для каждая категория (т. е. поперечная регрессия, сгруппированная по категориям (для Apple, Berry и Carrot и т. д.)).

Затем я хочу добавить новые столбцы df ['Y_hat'], у которого есть прогнозное значение из регрессии, а соответствующие 2 бета и t-статистические значения (значения бета и t-stat будут одинаковыми для нескольких строк одной категории).

Final ДФ будет иметь 5 дополнительных столбцов, Y_hat, бета-1, бета 2, т-стат 1 и т-стат 2.

ответ

1

Вы хотите сделать много вещей для «GroupBy» :)

Думаю, лучше, если вы нарезаете DataFrame по категориям, а затем сохраните каждый отдельный результат для этой категории в словаре, который вы собираетесь использовать в конце цикла, чтобы построить свой DataFrame.

result = {} 
# loop on every category 
for category in df['Category'].unique(): 
    # slice 
    df_slice = df[df['Category'] == category] 
    # run all the stuff your want to do 
    result[category] = { 
     'predicted_value': ***, 
     'Y_hat': *** 
     'etc' 
     ... 
    } 

# build dataframe with all your results 
final_df = pd.DataFrame(result) 

Будет легче, если когда-либо понадобится отладка! Удачи! :)

+0

Проблема на практике мой dataframe огромен, был бы более быстрый метод с помощью groupby? Спасибо – MysterioProgrammer91

+0

GroupBy работает быстро, потому что использует время выполнения и функцию, написанную в не-Python. Если вы пишете эту операцию, это чистый Python, то не будет разделить нарезку или использование группы pandas! –

 Смежные вопросы

  • Нет связанных вопросов^_^