5.13. mcross クロス集計¶
クロス集計を行う。
s=
で指定した項目の値が項目名となるように横に展開され、
k=
で指定した値が行idとなり、
f=
で指定した項目がセルとして出力される。
パラメータ¶
i= : 型=str , 任意(default=標準入力)
入力データを指定する。
o= : 型=str , 任意(default=標準出力)
出力データを指定する。
f= : 型=str , 必須
ここで指定された項目の値がセルの値として出力される。複数項目指定すると、複数行に展開される。それら複数行を識別するための項目としてfld
項目が出力され、f=
で指定した項目名が値として出力される。このfld
という項目名を変更したい場合はa=
パラメータを使う。
s= : 型=str , 条件付き必須( q
オプションの指定がない場合)
列項目名に展開する項目を指定する。ここで指定された項目の値が項目名として出力される。
a= : 型=str , 任意(default=)
f=
で指定した項目名がデータとして展開される項目名を指定する。省略した場合はfld
という項目名で出力される。
k= : 型=str , 任意(default=キーブレイク処理しない)
キー項目名リストここで指定した項目を単位に横展開をおこなう。
v= : 型=str , 任意(default=)
NULL値置換文字列NULL値があった場合、v=
パラメータで指定する置換文字列により、項目の値を置換する。
共通パラメータ¶
i= , o= , assert_diffSize= , assert_nullkey= , assert_nullin= , assert_nullout= , nfn= , nfno= , x= , q= , tmppath= , precision=
利用例¶
importと入力データ(CSV)の準備
1import nysol.mcmd as nm 2 3with open('dat1.csv','w') as f: 4 f.write( 5'''item,date,quantity,price 6A,20081201,1,10 7A,20081202,2,20 8A,20081203,3,30 9B,20081201,4,40 10B,20081203,5,50 11''')
基本例
item
項目を単位に date
項目を横に展開し、
quantity
項目を出力する。
1nm.mcross(k="item", f="quantity", s="date", i="dat1.csv", o="rsl1.csv").run() 2### rsl1.csv の内容 3# item%0,fld,20081201,20081202,20081203 4# A,quantity,1,2,3 5# B,quantity,4,,5
元の入力データに戻す例
例1の出力結果を元に戻すには、同じく mcross
を以下のよう用いればよい。
1nm.mcross(k="item", f="2008*", s="fld", a="date", i="rsl1.csv", o="rsl2.csv").run() 2### rsl2.csv の内容 3# item%0,date,quantity 4# A,20081201,1 5# A,20081202,2 6# A,20081203,3 7# B,20081201,4 8# B,20081202, 9# B,20081203,5
複数の値を出力
quantity,price
の2項目を出力する。
1nm.mcross(k="item", f="quantity,price", s="date", i="dat1.csv", o="rsl3.csv").run() 2### rsl3.csv の内容 3# item%0,fld,20081201,20081202,20081203 4# A,quantity,1,2,3 5# A,price,10,20,30 6# B,quantity,4,,5 7# B,price,40,,50
並びを逆順する例
横に展開する項目名の並びを逆順にする。
1nm.mcross(k="item", f="quantity,price", s="date%r", i="dat1.csv", o="rsl4.csv").run() 2### rsl4.csv の内容 3# item%0,fld,20081203,20081202,20081201 4# A,quantity,3,2,1 5# A,price,30,20,10 6# B,quantity,5,,4 7# B,price,50,,40
関連メソッド¶
mtra 縦型データをベクトル項目に変換 : 横展開するイメージは同じだが、
mtra
は1つのベクトル項目として出力する。