Python: Найти среднее значение Y для каждого значения X в координатах [X, Y] - PullRequest
0 голосов
/ 26 апреля 2020

Допустим, у меня есть список координат x, y, например:

coordinate_list = [(4,6),(2,5),(0,4),(-2,-2),(0,2),(0,0),(8,8),(8,11),(8,14)]

Я хочу найти среднее значение y, связанное с каждым значением x. Так, например, в наборе данных есть только одно значение "x", поэтому среднее значение y будет равно "5". Тем не менее, есть три 8, и среднее значение у будет 11 [(8 + 11 + 14) / 3].

Какой самый эффективный способ сделать это?

Ответы [ 3 ]

1 голос
/ 26 апреля 2020
y_values_by_x = {}
for x, y in coordinate_list:
    y_values_by_x.setdefault(x, []).append(y)

average_y_by_x = {k: sum(v)/len(v) for k, v in y_values_by_x.items()}
1 голос
/ 26 апреля 2020

Вы можете использовать pandas

coordinate_list = [(4,6),(2,5),(0,4),(-2,-2),(0,2),(0,0),(8,8),(8,11),(8,14)]
import pandas as pd
df = pd.DataFrame(coordinate_list)
df
df.groupby([0]).mean()
| 0 |  |  1  |
| --- | --- |
| -2 | -2 |
| 0 | 2 |
| 2 | 5 |
| 4 | 6 |
| 8 | 11 |
0 голосов
/ 26 апреля 2020

Попробуйте функцию mean () из модуля статистики с пониманием списка

from statistics import mean

x0_filter_value = 0   # can be any value of your choice for finding average
result = mean([x[1] for x in coordinate_list if x[0] == x0_filter_value])
print(result)

И выведите средства для всех значений X [0]:

 for i in set([x[0] for x in coordinate_list]):
      print (i,mean([x[1] for x in coordinate_list if x[0] == i]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...