質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

解決済

python 商品の組み合わせ 売上総額集計

kobakenn3
kobakenn3

総合スコア3

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

1回答

-2評価

0クリップ

237閲覧

投稿2022/03/16 01:58

編集2022/03/16 13:58

どなたか助けてください。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初心者のため、初歩的な質問で申し訳ございませんが、よろしくお願いいたします

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

1T2R3M4

2022/03/16 02:03

>初歩的な質問で申し訳ございません 質問ではなくて作業依頼では。 https://teratail.com/help/avoid-asking コードをください・デバッグしてください等の丸投げの質問 何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。
kobakenn3

2022/03/16 02:58

質問の仕方がよくなかったですね、申し訳ございません。 具体的には、 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) で実行してみたのですが、集計した金額があまりにも大きな値になってしまったため、 質問させていただいた次第です。
AbeTakashi

2022/03/16 03:08

↑この情報は質問文に含めるべきかと思います。1T2R3M4さんも書かれていますが、自分でどこまでやってどこが分からないのか?というのは質問する際には必須の情報です。それが質問文内にないため「作業依頼」というふうに受け取られてしまいます。質問文は追記や更新ができます。
kobakenn3

2022/03/16 03:28

ご指摘ありがとうございます。更新させていただきました。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。