У меня есть фрейм данных, который выглядит примерно так:
dt = {
"Item Id" : [1, 1, 1, 2, 2, 3, 4, 5, 5, 5, 5],
"Projected Sales" : [10, 20, 30, 40, 49, 4, 2, 3, 4, 10, 22],
"Actual Sales": [4, 5, 3, 10, 4, 42, 23, 1, 19, 24, 22]
}
sample_df = pd.DataFrame.from_dict(dt)
Вывод:
Item Id Projected Sales Actual Sales
0 1 10 4
1 1 20 5
2 1 30 3
3 2 40 10
4 2 49 4
5 3 4 42
6 4 2 23
7 5 3 1
8 5 4 19
9 5 10 24
10 5 22 22
Я пытаюсь сгенерировать новый фрейм данных со схемой, подобной:
Item Id R2_Score
x y
...
Где оценка R2 - это значение R2 для этого item_id. Я написал следующий код:
def r2_per_group(data, truth, predicted):
score = r2_score(data[truth], data[predicted])
print(score)
return r2_score(data[truth], data[predicted])
result = sample_df.groupby('Item Id').apply(r2_per_group, 'Actual Sales', 'Projected Sales')
Хотя это прекрасно работает для этого небольшого кадра данных. Однако мне нужно выполнить это для гораздо большего кадра данных ~ 5000000 строк с более чем 2000 группами, и я вижу противоречивые результаты, когда распечатанное значение r2_value не является значением r2_value, наблюдаемым в результирующем кадре данных для определенных идентификаторов элементов.
Я довольно растерялся из-за того, как это могло произойти.