#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 ?