python
1#降順に並んだTotalPriceをn個(今回はn=10)のグループに分ける
2df2['decil_value'] = pd.qcut(df2['TotalPrice'], 10, duplicates = 'drop')
3categories = df2['decil_value'].cat.categories.sort_values(ascending=False)
4categories = dict(zip(categories, [f'グループ{i+1}' for i in range(len(categories))]))
5
6#それぞれのグループごとに、値が大きい順から「グループ1」「グループ2」…「グループn」としたい
7df2['decil_score'] = df2['decil_value'].map(categories)
8
9print(df2)
10
11#
12 CustomerID TotalPrice decil_value decil_score
130 6 52862 (38281.0, 52862.0] グループ1
141 45 47955 (38281.0, 52862.0] グループ1
152 31 47198 (38281.0, 52862.0] グループ1
163 11 40756 (38281.0, 52862.0] グループ1
174 47 39121 (38281.0, 52862.0] グループ1
185 20 37441 (28059.0, 38281.0] グループ2
196 32 36439 (28059.0, 38281.0] グループ2
207 40 35210 (28059.0, 38281.0] グループ2
218 12 32759 (28059.0, 38281.0] グループ2
229 48 28059 (25016.0, 28059.0] グループ3
2310 3 26879 (25016.0, 28059.0] グループ3
2411 13 25663 (25016.0, 28059.0] グループ3
2512 15 25361 (25016.0, 28059.0] グループ3
2613 23 25166 (25016.0, 28059.0] グループ3
2714 19 24866 (22805.0, 25016.0] グループ4
2815 44 24640 (22805.0, 25016.0] グループ4
29 :
30
3132 18 11721 (8704.0, 12052.5] グループ8
3233 49 11347 (8704.0, 12052.5] グループ8
3334 7 11223 (8704.0, 12052.5] グループ8
3435 29 10425 (8704.0, 12052.5] グループ8
3536 17 8704 (6101.5, 8704.0] グループ9
3637 41 8255 (6101.5, 8704.0] グループ9
3738 27 6522 (6101.5, 8704.0] グループ9
3839 37 6437 (6101.5, 8704.0] グループ9
3940 42 6313 (6101.5, 8704.0] グループ9
4041 14 5890 (129.999, 6101.5] グループ10
4142 2 3708 (129.999, 6101.5] グループ10
4243 16 2196 (129.999, 6101.5] グループ10
4344 38 548 (129.999, 6101.5] グループ10
4445 1 130 (129.999, 6101.5] グループ10