Фрейм данных Pandas, создающий средние тенденции для сгруппированных данных, где на одно наблюдение приходится только точка данных

#python #pandas #dataframe #matplotlib #average

Вопрос:

У меня есть набор данных, который выглядит примерно так (это гораздо более упрощенная версия).:

 Gp  X   Y
1   0   15
1   4   17
1   8   19
1   12  21
2   1   13.5
2   5   15.5
2   9   17.5
2   13  19.5
3   2   15
3   6   17
3   10  19
3   14  21
4   3   12.5
4   7   14.5
4   11  16.5
4   15  18.5
 

Вот графическое представление

введите описание изображения здесь

Важно отметить, что для каждого значения X редко или никогда не бывает более одного значения Y. Однако мои данные распределены по отдельным группам. Я хочу усреднить Y этих групп по отношению к X. Вот графическое представление того, чего я хочу достичь.

введите описание изображения здесь

Где в данном случае черная непрерывная линия является средним значением, а пунктирные линии представляют собой стандартное отклонение или диапазон.

Есть ли способ, используя панд, создать усредненный набор данных, подобный этому? Я не сразу подумал, что скользящее среднее всех наборов будет лучшим решением, поскольку значения X непрерывны и не обязательно равномерно распределены.

Моей непосредственной мыслью была какая-то интерполяция, где я интерполировал каждую группу, чтобы сгенерировать значения Y для значений X, отсутствующих в наборе, а затем, как только это будет сделано, возьмите среднее значение всех значений Y групп в каждом X.

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

Комментарии:

1. Я не совсем понимаю, как использовать группы. Разве вы не можете просто игнорировать группы и рассчитать линейное приближение с помощью linregress ?