биннинг двумерных данных по индексу в python - PullRequest
0 голосов
/ 07 мая 2018

Как бы я скопировал некоторые данные на основе индекса данных в Python 3

Допустим, у меня есть следующие данные

1   0.5
3   0.6
5   0.7
6   0.8
8   0.9
10  1
11  1.1
12  1.2
14  1.3
15  1.4
17  1.5
18  1.6
19  1.7
20  1.8
22  1.9
24  2
25  2.1
28  2.2
31  2.3
35  2.4

как бы я взял эти данные и сгруппировал оба столбца так, чтобы в каждом из них было n чисел, и усреднил числа в каждом бине и вывел их. например, если бы я хотел, чтобы значения на 4

Я бы взял первые четыре точки данных:

1   0.5
3   0.6
5   0.7
6   0.8

и их средние значения будут: 3,75 0,65

Я бы продолжил вниз по столбцам, взяв следующий набор из четырех, и так далее пока я не усреднил все четыре набора, чтобы получить это:

3.75    0.65 
10.25   1.05
16      1.45
21.25   1.85
29.75   2.25

Как я могу сделать это, используя python

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

База на numpy reshape

pd.DataFrame([np.mean(x.reshape(len(df)//4,-1),axis=1) for x in df.values.T]).T
       0     1
0   3.75  0.65
1  10.25  1.05
2  16.00  1.45
3  21.25  1.85
4  29.75  2.25
0 голосов
/ 07 мая 2018

Вы можете «сложить» индекс в группы по 4 и вызвать groupby в индексе.

df.groupby(df.index // 4).mean()
       0     1
0   3.75  0.65
1  10.25  1.05
2  16.00  1.45
3  21.25  1.85
4  29.75  2.25
...