Группировка Pandas
Имеются данные, нужно разбить на 9 интервалов. После проверить каждый элемент к какому интервалу он принадлежит Исходные данные 3414, 3563, 3391, 3463, 3110, 2844, 3292, 3321, 3608, 2753, 2886, 3596, 3644, 4029, 4023, 4870, 5859, 6321, 5923, 5699, 5521, 5995
моя попытка реализации
import pandas as pd
import numpy as np
excel_file = pd.ExcelFile('example.xlsx')
require_cols = [1]
df = pd.read_excel('example.xlsx', usecols=require_cols)
df_min_max = df.aggregate(['min', 'max'])
my_list = df["Data"].tolist()
interval = pd.cut(np.array(my_list), 9)
print(my_list)
print(interval)
print(df_min_max)
первая фотка это данные вторая это это интервалы на которые я разбил третья это как я обозначил каждый интервал четвертая я сопоставляю какие данные принадлежат какому интервалу
Ответы (2 шт):
Не совсем понял, что вы хотите, но там можно поиграться параметрами labels и retbins. Например, если выставить labels=False, то можно получить на выходе сразу номера бинов, в которые попали значения и больше ничего лишнего:
import pandas as pd
import numpy as np
txt = "3414, 3563, 3391, 3463, 3110, 2844, 3292, 3321, 3608, 2753, 2886, 3596, 3644, 4029, 4023, 4870, 5859, 6321, 5923, 5699, 5521, 5995"
data = list(map(int, txt.split(', ')))
df = pd.DataFrame({'Data': data})
df_min_max = df.aggregate(['min', 'max'])
my_list = df["Data"].tolist()
interval = pd.cut(np.array(my_list), 9, labels=False)
print(my_list)
print(interval)
print(df_min_max)
Вывод:
[3414, 3563, 3391, 3463, 3110, 2844, 3292, 3321, 3608, 2753, 2886, 3596, 3644, 4029, 4023, 4870, 5859, 6321, 5923, 5699, 5521, 5995]
[1 2 1 1 0 0 1 1 2 0 0 2 2 3 3 5 7 8 7 7 6 8]
Data
min 2753
max 6321
@CrazyElf правильно намекнул на использование параметра labels
import pandas as pd
lst = [3414, 3563, 3391, 3463, 3110, 2844, 3292, 3321, 3608, 2753, 2886,
3596, 3644, 4029, 4023, 4870, 5859, 6321, 5923, 5699, 5521, 5995]
df = pd.DataFrame({"Data":lst})
bins = 9
df["Interval"] = pd.cut(df["Data"], bins, labels=["A"+str(x) for x in range(1, bins+1)])
df, соответственно, получится:
Data Interval
0 3414 A2
1 3563 A3
2 3391 A2
3 3463 A2
4 3110 A1
5 2844 A1
6 3292 A2
7 3321 A2
8 3608 A3
9 2753 A1
10 2886 A1
11 3596 A3
12 3644 A3
13 4029 A4
14 4023 A4
15 4870 A6
16 5859 A8
17 6321 A9
18 5923 A8
19 5699 A8
20 5521 A7
21 5995 A9



