5.1. maccum 累積計算

f= パラメータで指定した項目の累積を計算し、新しい項目として追加する。 k= を指定することで、キー単位毎に累積計算が可能となる。

パラメータ

k= : 型=str , 任意(default=キーブレイク処理しない)

累積の単位となる項目名リスト(複数項目指定可)を指定する。

s= : 型=str , 条件付き必須( q オプションの指定がない場合)

ここで指定した項目(複数項目指定可)で並べ替えられた後、累積が計算される。
q オプションを指定しないとき、 s= パラメータは必須。

f= : 型=str , 必須

ここで指定した項目(複数項目指定可)の値が累積される。
項目の値がNULL値である場合は無視される。
:(コロン)で新項目名を指定する必要がある。例) f=数量:数量累計

i= : 型=str , 任意(default=標準入力)

入力データを指定する。

o= : 型=str , 任意(default=標準出力)

出力データを指定する。

利用例

importと入力データ(CSV)の準備

 1import nysol.mcmd as nm
 2
 3with open('dat1.csv','w') as f:
 4  f.write(
 5'''customer,quantity,amount
 6A,1,10
 7A,2,20
 8B,1,15
 9B,3,10
10B,1,20
11''')
12
13with open('dat2.csv','w') as f:
14  f.write(
15'''customer,quantity,amount
16A,1,10
17A,,20
18B,1,15
19B,3,
20B,1,20
21''')

基本例

quantityamount 項目の累積値を計算し、 qttAccumamtAccum という項目名で出力する。

1nm.maccum(s="customer", f="quantity:qttAccum,amount:amtAccum", i="dat1.csv", o="rsl1.csv").run()
2### rsl1.csv の内容
3# customer%0,quantity,amount,qttAccum,amtAccum
4# A,1,10,1,10
5# A,2,20,3,30
6# B,1,15,4,45
7# B,3,10,7,55
8# B,1,20,8,75

キー項目を指定する例

customer 項目を単位に quantityamount 項目の累積値を計算し、 qttAccumamtAccum という項目名で出力する。

1nm.maccum(k="customer", s="customer", f="quantity:qttAccum,amount:amtAccum", i="dat1.csv", o="rsl2.csv").run()
2### rsl2.csv の内容
3# customer,quantity,amount,qttAccum,amtAccum
4# A,1,10,1,10
5# A,2,20,3,30
6# B,1,15,1,15
7# B,3,10,4,25
8# B,1,20,5,45

NULL値を含む累計

quantityamount 項目の累積値を計算し、 qttAccumamtAccum という項目名で出力する。 NULLは無視される。結果もNULLが出力される。

1nm.maccum(s="customer", f="quantity:qttAccum,amount:amtAccum", i="dat2.csv", o="rsl3.csv").run()
2### rsl3.csv の内容
3# customer%0,quantity,amount,qttAccum,amtAccum
4# A,1,10,1,10
5# A,,20,,30
6# B,1,15,2,45
7# B,3,,5,
8# B,1,20,6,65

関連メソッド

  • mshare 構成比の計算 : 構成比を計算する。 maccum と組み合わせて累積相対度数が計算できる。

  • mcal 項目間演算 : 前行の計算結果 #{} を利用することで累計計算ができる。