У меня есть данные в пандах, содержащие информацию, которую я хотел бы отсортировать по группам на основе их идентификатора («квадрат»).Я хочу получить среднюю яркость для каждой группы, и на основе этой средней яркости я хочу разбить кадр данных на 4 категории и получить 4 выходных кадра данных.
Пример кадра данных:
squares = pd.DataFrame({'square': {0: 1.0, 1: 1.0, 2: 2.0, 3: 2.0, 4: 5.0, 5: 6.0, 6: 7.0, 7: 8.0},
'time': {0: 1.0, 1: 2.0, 2: 1.0, 3: 2.0, 4: 3.0, 5: 3.0, 6: 4.0, 7: 5.0 },
'x': {0: 243, 1: 293, 2: 189, 3: 189, 4: 176, 5: 374, 6: 111, 7: 239},
'y': {0: 233, 1: 436, 2: 230, 3: 233, 4: 203, 5: 394, 6: 171, 7: 284},
'brightness': {0: 1000, 1: 1200, 2: 4000, 3: 5000, 4: 2000, 5: 8000, 6: 1300, 7: 4300 }})
squares = squares.set_index('time')
squares
brightness square x y
time
1.0 1000 1.0 243 233
2.0 1200 1.0 293 436
1.0 4000 2.0 189 230
2.0 5000 2.0 189 233
3.0 2000 5.0 176 203
3.0 6000 6.0 374 394
4.0 1300 7.0 111 171
5.0 4300 8.0 239 284
Желаемый конечный результат:
squares_1
brightness square x y
time
1.0 1000 1.0 243 233
2.0 1200 1.0 293 436
3.0 2000 5.0 176 203
4.0 1300 7.0 111 171
squares_2
NaN
squares_3
brightness square x y
time
1.0 4000 2.0 189 230
2.0 5000 2.0 189 233
5.0 4300 8.0 239 284
squares_4
brightness square x y
time
3.0 6000 6.0 374 394
Я начал со следующего:
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
avg = squares.groupby('square')['brightness'].mean()
n, bins, patches = plt.hist(avg, bins = 4)
inds = np.digitize(avg, bins)
Хотя я не совсем уверен, как продолжить.Любая помощь приветствуется!