pivot_table()
にて得られたDataFrameを
Python
1df.stack().groupby(level=1).sum()
のように変形することで、各四半期毎の各製品のシェアを求めることができます。(シェアは全施設の合計から算出)
あとは idxmax()
を使用することで一番シェアが高い製品を求めることあできるかと思います。
Pthon
1import pandas as pd
2
3idx = pd.MultiIndex.from_product(
4 [['Q1','Q2','Q3'],['製品A','製品B','製品C']])
5df = pd.DataFrame([[100,200,300,100,250,400,100,200,200],
6 [150,250,350,150,200,450,150,260,300]],
7 columns=idx, index=['施設A','施設B'])
8print(df)
9# Q1 Q2 Q3
10# 製品A 製品B 製品C 製品A 製品B 製品C 製品A 製品B 製品C
11#施設A 100 200 300 100 250 400 100 200 200
12#施設B 150 250 350 150 200 450 150 260 300
13
14tmp = df.stack().groupby(level=1).sum()
15tmp = tmp / tmp.sum()
16print(tmp)
17# Q1 Q2 Q3
18#製品A 0.185185 0.161290 0.206612
19#製品B 0.333333 0.290323 0.380165
20#製品C 0.481481 0.548387 0.413223
21
22ret = pd.concat([tmp.idxmax().rename('製品名'), tmp.max().rename('シェア')], axis=1)
23print(ret)
24# 製品名 シェア
25#Q1 製品C 0.481481
26#Q2 製品C 0.548387
27#Q3 製品C 0.413223