5.62. mtrafld クロス表をトランザクション項目に変換¶
f=
で指定した項目値とその値のペアのアイテムを作成し、
それらのアイテムを連結し新しいベクトル項目(トランザクション項目とも呼ぶ)として出力する。
パラメータ¶
i= : 型=str , 任意(default=標準入力)
入力データを指定する。
o= : 型=str , 任意(default=標準出力)
出力データを指定する。
a= : 型=str , 必須
トランザクション項目名を指定する。
f= : 型=str , 条件付き必須(r
オプション指定時必須)
項目名リスト(複数項目指定可)ここで指定された項目名と値とを連結したアイテムを作成しトランザクション項目として出力される。r
オプションの指定がある時はトランザクションデータから抜き出す項目名を指定する。r
オプションが指定されたとき,このパラメータは省略可能である。省略すると、全ての項目名と値ペアを処理対象とする。ただし、f=
パラメータを省略すると標準入力(パイプ入力)は利用できない。
delim= : 型=str , 任意(default=)
トランザクション項目のアイテムを区切る文字を指定する(省略時はスペース)。
delim2= : 型=str , 任意(default=)
項目名と値ペアとを区切る文字を指定する(省略時は=)。
r= : 型=bool , 任意(default=False)
条件反転トランザクション項目をクロス表に変換する。
valOnly= : 型=bool , 任意(default=False)
このオプションが指定されると、アイテムとして「項目名=」は出力しない。
共通パラメータ¶
i= , o= , assert_diffSize= , assert_nullin= , assert_nullout= , nfn= , nfno= , x= , tmppath= , precision=
利用例¶
importと入力データ(CSV)の準備
1import nysol.mcmd as nm 2 3with open('dat1.csv','w') as f: 4 f.write( 5'''customer,price,quantity 6A,198,1 7B,325,2 8C,200,3 9D,450,2 10E,100,1 11''') 12 13with open('dat2.csv','w') as f: 14 f.write( 15'''customer,price,quantity 16A,198,1 17B,,2 18C,200, 19D,450,2 20E,, 21''')
基本例
price
と quantity
項目を1つの文字列として連結し、
transaction
という項目名で出力する。
1nm.mtrafld(a="transaction", f="price,quantity", i="dat1.csv", o="rsl1.csv").run() 2### rsl1.csv の内容 3# customer,transaction 4# A,price=198 quantity=1 5# B,price=325 quantity=2 6# C,price=200 quantity=3 7# D,price=450 quantity=2 8# E,price=100 quantity=1
基本例2
出力された結果を r=True
をつけて再実行し元に戻す。
1nm.mtrafld(r=True, a="transaction", f="price,quantity", i="rsl1.csv", o="rsl2.csv").run() 2### rsl2.csv の内容 3# customer,price,quantity 4# A,198,1 5# B,325,2 6# C,200,3 7# D,450,2 8# E,100,1
区切り文字の指定
price
と数量 quantity
項目を_(アンダーバー)で区切り1つの文字列として連結し、
項目名とデータは:(コロン)で区切り transaction
という項目名で出力する。
1nm.mtrafld(a="transaction", f="price,quantity", delim="_", delim2=":", i="dat1.csv", o="rsl3.csv").run() 2### rsl3.csv の内容 3# customer,transaction 4# A,price:198_quantity:1 5# B,price:325_quantity:2 6# C,price:200_quantity:3 7# D,price:450_quantity:2 8# E,price:100_quantity:1
NULL値を含む場合
1nm.mtrafld(a="transaction", f="price,quantity", i="dat2.csv", o="rsl4.csv").run() 2### rsl4.csv の内容 3# customer,transaction 4# A,price=198 quantity=1 5# B,quantity=2 6# C,price=200 7# D,price=450 quantity=2 8# E,
NULL値を含む場合2
出力された結果を r=True
をつけて再実行し元に戻す。
1nm.mtrafld(r=True, a="transaction", f="price,quantity", i="rsl4.csv", o="rsl5.csv").run() 2### rsl5.csv の内容 3# customer,price,quantity 4# A,198,1 5# B,,2 6# C,200, 7# D,450,2 8# E,,
-valOnlyの指定
1nm.mtrafld(valOnly=True, f="price,quantity", a="transaction", i="dat2.csv", o="rsl6.csv").run() 2### rsl6.csv の内容 3# customer,transaction 4# A,198 1 5# B,2 6# C,200 7# D,450 2 8# E,
関連メソッド¶
mvsort ベクトル要素のソート : トランザクションデータはベクトル型データを処理する一連の処理コマンド(
mv
から始まる)によって加工できる。mcross クロス集計 : トランザクションデータとしてではなく、個々のアイテムを独立した項目として出力し、その出現件数を出力する。
mtra 縦型データをベクトル項目に変換 : 項目の値をアイテムとしてトランザクションデータを作成する。
mtraflg クロス表をトランザクション項目に変換 : 項目名をアイテムとしてトランザクションデータを作成する。