どなたか助けてください。pythonに関する質問です。
〇前提
当店では、お客様に商品を2つ選択してもらい、販売する形式をとっています。
売上のデータからどの組み合わせが最も売り上げをあげているかを把握したいです。
〇用いるデータ(例)
csv_data = '''
No,商品A,商品B,時刻,支払額
0,みかん,りんご,2022/3/15 10:00,-300
1,りんご,桃,2022/3/15 12:00,-500
2,ぶどう,みかん,2022/3/15 14:00,-400
3,みかん,レモン,2022/3/15 15:00,-600
4,りんご,みかん,2022/3/15 16:00,-200
5,みかん,りんご,2022/3/15 17:00,-180
6,みかん,レモン,2022/3/15 15:10,-290
7,レモン,みかん,2022/3/15 15:20,-420
'''
〇実現したいこと
読み込んだcsvデータの支払額がお客様がその時支払った金額になるので、
以下のような形で集計したい。*商品AとBを入れ替えた組み合わせ(例えば みかん&りんご と りんご&みかん)は同じ組み合わせとみなしてカウントする。
組み合わせ,売れた数,売上金額
みかん&りんご,30,9000
りんご&桃,20,8800
ぶどう&みかん,40,7000
〇課題
・当店では単価が決まっておらず、各組み合わせに応じて料金が決まっているため、
単純に商品Aの金額と商品Bの金額を合計できない
・価格変動制のため、例えばりんご&みかんを300円で販売するときもあれば320円である場合もあるため、csvの”支払額”のカラムに基づいた金額で集計したい
・現状読み込むcsvデータの”支払額”はobject型になっているので、合算可能な形にまずは変換する必要がある想定
です。
〇試したこと
df["支払額"] = pd.to_numeric(df["支払額"])
dfx = df.groupby(df[["商品A","商品B"]].agg(frozenset,1))["No"].sum().to_frame("支払額")
dfx.sort_values(by="支払額",ascending=False).head(10)
でやってみましたが、想定した金額よりも大きな値となってしまい、困っています。
〇当サイトで売れた数の集計方法は教えていただいたのですが、同時に売上金額の集計も
実現したく質問させていただきます。
python初心者のため、初歩的な質問で申し訳ございませんが、よろしくお願いいたします
回答1件
あなたの回答
tips
プレビュー