Как рассчитать среднее значение массива с помощью группировки переменных в Python? - PullRequest
0 голосов
/ 10 июня 2019

Я хотел бы рассчитать среднее значение массива в Python, используя различные переменные группировки.Например, я хочу вычислить среднее значение всех значений в column1, для которых column2 == 2 и column3 == a + 3.

Я пробовал цикл for & if, но он кажется чрезвычайно сложным, а размеры моих данных слишком запутанными.Есть ли другой способ сгруппировать данные для определенных условий и рассчитать среднее значение для каждой комбинации условий в отдельности?

Я ищу функцию типа group_by(), summarise() или aggregate() в R, только для Python.

Это цикл, который я пробовал до сих пор:

    for j in range(0,len(e_data)): #iterate for each row in e_data
      if e_data[j,6] == 0.0082:
        if e_data[j,1] == ped1:
          e_data[j,7] = mean(e_data[:,4][np.where((e_data[:,0] == (ped1+0.0082)) & (e_data[:,5] == i))])
        elif e_data[j,1] == ped2:
          e_data[j,7] = mean(e_data[:,4][np.where((e_data[:,0] == (ped2+0.0082)) & (e_data[:,5] == i))])
        elif e_data[j,1] == ped3:
          e_data[j,7] = mean(e_data[:,4][np.where((e_data[:,0] == (ped3+0.0082)) & (e_data[:,5] == i))]))
      if e_data[j,6] == 0.001:
        if e_data[j,1] == ped1:
          e_data[j,7] = mean(e_data[:,4][np.where((e_data[:,0] == (ped1+0.001)) & (e_data[:,5] == i))])
        elif e_data[j,1] == ped2:
          e_data[j,7] = mean(e_data[:,4][np.where((e_data[:,0] == (ped2+0.001)) & (e_data[:,5] == i))])
        elif e_data[j,1] == ped3:
          e_data[j,7] = mean(e_data[:,4][np.where((e_data[:,0] == (ped3+0.001)) & (e_data[:,5] == i))])
      if e_data[j,6] == 0.0235:
        if e_data[j,1] == ped1:
          e_data[j,7] = mean(e_data[:,4][np.where((e_data[:,0] == (ped1+0.0235)) & (e_data[:,5] == i))])
        elif e_data[j,1] == ped2:
          e_data[j,7] = mean(e_data[:,4][np.where((e_data[:,0] == (ped2+0.0235)) & (e_data[:,5] == i))])

1 Ответ

0 голосов
/ 10 июня 2019

Я бы порекомендовал вам оформить заказ Панд , который делает именно то, что вам нужно.

В мире питонов Pandas - это лучшее решение для задач анализа данных, подобных описанным вами.

Как только вы импортируете свои данные (в идеале в формате .csv) в панды:

import pandas as pd

df = pd.read_csv('filepath_to_your_data')

## I want to calculate the mean of all values in column1, for which column2 == 2 and column3 == a + 3
df[(df.column2==2) & (df.column3 == a+3)].loc[:, 'column1'].mean()

Панды также предлагает groupby, describe и agg

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...