【質問】
上記の画像の’Gruop”列において上から、グループ1~グループ10という順番にしたいのですが、上手く変化させることができません。
おそらく現在私が理解できていないのは、下記の2点です。
①グループ1が、Dataframeの一番上に来るように調整する(その下にグループ2、3、…となるように)
②グループ1と2の間に、グループ10が入ってくる現象に対して、対策をする
よろしくお願いいたします。
どなたかご教授頂けませんでしょうか?!!
【コード】
#今回使用しているデータセットA df = A #データセットAの中で、同じCustomerIDを持っているデータをまとめ、購買金額の合計(TotalPrice)を出している df1 = df[['CustomerID', 'TotalPrice']].groupby('CustomerID').sum() #合計したTotalPriceを軸に、降順に並び替える df2 = df1.sort_values(by='TotalPrice', ascending=False).reset_index() #並び替えたTotalPriceをn個に等分し(今回はn=10)、各グループのTotalPriceの合計を出す df3 = df2.groupby(pd.qcut(df2['TotalPrice'], 10, duplicates = 'drop')).sum() #TotalPriceの合計が大きいグループから順に、「グループ1」「グループ2」…と名前を付ける df3['Group'] = df3['TotalPrice'].rank(ascending=False).astype(int).apply(lambda x: f'グループ{x}') #それぞれの合計購買金額が、今回のデータセットから得られる購買金額の総計に対して、何%を占めるのか計算する df3['Ratio(%)'] = (df3['TotalPrice'] / df['TotalPrice'].sum()) #最終提出の形に指定があるため、上から順に「グループ1」「グループ2」…「グループn」という配列になるようにしたい df4 = df3.sort_values(by='Group', ascending=False) #「グループ1」「グループ2」…という配列が実現したら、それぞれの「Ratio(%)」という要素を、pd.Series形式で吐き出したい my_result = pd.Series(df4['Ratio(%)'])

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/19 13:00
2022/05/19 13:03
2022/05/19 13:38
2022/05/22 01:14
2022/05/22 01:23