縦持ちしていた数量のデータに対してQ1,Q2のように四半期をつけた結果をpivot_tableでピボットした結果、以下のような結果を得たとします。
Q Q1 Q2 Q3
製品 製品A 製品B 製品C 製品A 製品B 製品C 製品A 製品B 製品C
施設A 100 200 300 100 250 400 100 200 200
施設B 150 250 350 150 200 450 150 260 300
この時
(1) Qごとの製品Aのシェアを算出する方法
(2) Qの中で最もシェアが高い製品を特定し、その製品のシェアを出す
という算出の必要が出ました。
当方、Pythonについて、まだ初心者で、いろいろと調べたのですが、方法が
見つかりませんでした。
ご教示いただけますと幸いです。
よろしくお願い申し上げます。
・質問の表はpandasのDataFrameですか? 検証できないので元のデータサンプルとピボットしたコードも掲載してください。
・「いろいろと調べたのですが、方法が見つかりませんでした。」とのことですが、何をどのように調べましたか? ヒントすらも見つからなかったのでしょうか?
サジェスチョンありがとうございます。実際のデータが商用の二次データで、版権の問題があったため、少し問題を簡単にするためにデータフレームのイメージを描きました。調べ方はpandas ,pivot_table, シェアを求める などでググリました。自分なりに考えて、少し見えてきた兆しはあります。
pivotを行ったイメージは伝わらないかもしれませんが、
cym_pivot1 = pd.pivot_table(cym_all, index=['DDDブリック名'], columns=['Qフラグ','製品グループ2'], values=['PAT'],aggfunc=sum)
です。
データはサンプルデータで良いのですよ。実際にコードを動かさないと何とも言えないので。
シェアを計算するのならピボットにする必要もないのでは?と思ったので元のデータがあれば何か分かるかと思ったのですが。「少し見えてきた兆しはあり」とのことなので頑張ってください。
すみません。やはりいろいろと考えたのですが、結果の出し方がわかりません。
例えば、以下のようなデータがあったとします。
brick_id| Qフラグ| product| pat_x |pat_y |シェア
1012416| FY19-1Q |サインバルタ計| 14119.00739| 14583.64342| |0.96814
1012416| FY19-1Q| リリカ| 464.636035| 14583.64342 |0.03186
1012416| FY19-2Q| サインバルタ計| 13897.32032 |14207.07768 |0.978197
1012416| FY19-2Q |リリカ| 309.757356| 14207.07768| 0.021803
1012416 |FY20-1Q| サインバルタ計| 13253.45632 |14234.35461| 0.931089
というデータがあった際に、brick_idとQフラグ毎に、最大のシェアと最大シェアを持つproductを出した表を出すためにはどうすればよろしいでしょうか。
データをきれいに見せられなくてすみません。
やはり一旦、ロング型にしたほうが良いでしょうか。
よろしくお願い申し上げます。
回答2件
あなたの回答
tips
プレビュー