teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2020/08/07 08:02

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  商品の種類が増える可能性があるのであればデータは「縦持ち」のほうがよいです。
4
4
  横持にしたければ`pivot_table`を使えばよいです。
5
+
6
+ 追記
7
+ -----
8
+ たとえば「商品」ではなく「ハンバーガー」「ジュース」などの大まかな商品グループ毎に集計したくなった場合、横持だと大変です。
9
+ 縦持ちなら、集計対象でグルーピングして`pivot_table`するだけですみます。
5
10
  ```Python
6
11
  import pandas as pd
7
12
  import numpy as np
@@ -27,4 +32,18 @@
27
32
  #2020/07/11 0.0 8.0 0.0 10.0 12.0 0.0 30
28
33
  #2020/07/12 1.0 0.0 7.0 9.0 0.0 3.0 20
29
34
  #All 1.0 8.0 7.0 19.0 12.0 3.0 50
35
+
36
+
37
+ # 商品グループ毎に同様の集計を行う
38
+
39
+ df['商品グループ'] = df['商品'].str.replace('[A-Z]','')
40
+
41
+ df2 = pd.pivot_table(df, index='日付', columns='商品グループ', values='個数', margins=True, aggfunc=np.sum)
42
+ df2 = df2.fillna(0)
43
+ print(df2)
44
+ #商品グループ デザート ドリンク バーガー All
45
+ #日付
46
+ #2020/07/11 0.0 8.0 22.0 30
47
+ #2020/07/12 1.0 7.0 12.0 20
48
+ #All 1.0 15.0 34.0 50
30
49
  ```