• 検索結果がありません。

第 9 章 時系列解析  Time Series 173

B.7 plot

関数型と明示型の共存 明示型の中で関数型を使うことができる。無理に全部を関 数型で作る必要はない。

282 付録B J言語超入門

0

1

2

3

4 0 5

10 15 0

20 40 60 80

B.2 cos sin

’surface’ plot 5 20 $ 100?100 pd ’eps temp_append_sin1.eps’

0 1 2 3 4 5 6 7 8 9 10

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

cos sin

B.3 cos sin

plot_test =:3 : 0

NB. ---pd ’reset’

pd ’sub 0 0 1000 _40’

pd ’sub 2 1 ’

NB. ---0 0---pd ’new’

pd ’keypos ib’

pd ’keystyle lho’

pd ’key cos sine’

pd ’color navy,green’

pd a; sin a=. steps 0 10 100 NB. ---0 1---pd ’new’

pd ’type surface’

pd 5 20 $ 100$100 pd ’show’

)

第 C

データの入出力

C.1 CSV ファイル

最近配布されているファイルはEXCELかCSV形式が大半である。EXCELは窓 やMACとの連携はよくできているが、他のプラットフォームでは扱えない。最近

はMS-OFFICEのクローンも増えてきた。

CSV(Camma Separated Values)とは、カンマで区切られたファイルで、永い伝統を 持ったファイル形式である。筆者は20万件のデータ程度はCSV形式で取り扱っ ており、手軽で便利である。

C.1.1 EXCEL

から

CSV

への出力

著者はファイルはEXCELで管理し、数値部分のみEXCELからCSVに出力して いる。CSVへの出力は、ファイルをセーブするときに、[名前を付けて保存]を指 定し、ダイアログボックスで保存するファイル形式をCSVと指定すればよく、元 のファイルは変更されない。

ここでの約束は

カンマ カンマはつけない。(データがカンマで分離されることが多い)出力する 数値の範囲を先にマウスなどで選んで、書式→セル数値でカンマのチェッ クを外しておく。

空白 空白は0や99999などで埋めておく(その行のみ左詰めになることがある。)

下部の余白に付くゴミ csvファイルの最下行の下にゴミの行ができたならばノー トパッドなどで削除しておく(そのままだと空白のボックスが入ることがある)

アクセスなどのデータベースもCSV出力機能を持っている。ファイル出力でcsv を選べばよい。

C.1.2 csv

ファイルの読み込み

データの読み込みはcsvが便利である。20万件程度のファイルはメモリが確保で きれば一度に読み込める。

最初に ファイルを取り扱うライブラリを読み込む。

require ’files csv’

284 付録C データの入出力

C.1 カンマを外す

読み込み パスを指定する。

DAT=: ".@> readcsv ’user/classes/numeric_recipe/data/csv/foo.csv’

DIRCSVなどとパスを定義しておくと簡易になる。

DIRCSV=: jpath ’˜user/classes/numeric_recipe/data/csv/’

jpath はj602-userのuserを探してくれる。チルド(˜)を付ける。

数値化 csvファイルはテキストファイルでboxに入っている。

DAT=. ".@> readcsv DIRCSV,’foo.csv’

CSVファイルの中身は数字の形をしていても文字である。Jから読み込んだと きは一つずつボックスに入っている。

数値の部分のみをCSV ファイルにしてある場合は上記のように".@>で数 値化して、ボックスを開いておく。

マトリクスの構成如何で".@>で開いたときに崩れることがある。

文字列と混在のファイルでは文字列を落としてから数値化を行う。

確認 以上で名詞DAT に数値データが入った。先ずDAT と打ってデータがざっ と出れば次に+/ DATとして、縦に合計ができれば数値化もできている。

文字列も入ったBOX  ボックスの混合配列はそのままでは数値化できない。文 字列の部分を切り出し数値化を行う。

C.1.3 CSV

ファイルへの出力

require ’files csv’が必要

(i.5 5) writecsv ’/temp/test.csv’

120

複雑な計算の場合は予め済ませておき、 writecsvの左引数は名詞(a=. ....)を用 いる。

J602はパスが複雑になったので出力先は各自のtemp等を用いた方がよい

関連したドキュメント