2014年07月27日

TARGET出力CSVファイル処理にAWKをオススメします

データ派あるいは指数派だとTARGETから出力されるCSVファイルを色々加工して、競馬予想に活かしたいというニーズがあると思います。

色々な方法はありますが、私の場合AWKというプログラミング言語を長年CSVファイルの処理に使っています。プログラミング言語というと敷居が高く感じるかもしれませんが、AWKはテキスト処理に特化した言語でCSVファイル処理が簡単にできます。また実行環境のインストールもファイルコピーのみでOKで、インストールなどは不要です。

AWKとTARGETから出力されるCSVファイル処理は相性がいいので紹介します。


■AWKの具体例

具体的には以下の様なコードを書くだけで

==========================
BEGIN{
FS=",";
OFS=",";
print "年月日","競馬場","R","馬番","馬名"
}
{
print $1,$2,$3,$4,$8
}
==========================

「CSVファイルの1行目にヘッダを追加し、特定列のみ出力する」
というような、CSVファイルを扱うのにありがちな処理が簡単に記述できます。

ちなみに上記のプログラムはTARGETの「出馬表分析CSV形式出力ファイル」

出馬表分析.png


を以下の様なCSVファイルに加工する処理になります。

年月日,競馬場,R,馬番,馬名
140719,函館,1, 1,ルミノーソ
140719,函館,1, 2,アルボルデヴィダ
140719,函館,1, 3,イシドールス
140719,函館,1, 4,シシャモショウグン
140719,函館,1, 5,フィールドリアン



■上記プログラムの概略説明

AWKは基本的に
  1. インプットされたCSVファイルを1行ずつ読込
  2. 読み込んだ行に何らかの処理を実施
  3. 処理結果を出力
  4. 上記をCSVファイル最終行まで繰り返し
のように動作します。

プログラム内部についても簡単に記述すると
  • BEGIN{}で囲まれた部分はCSVファイル読込までの事前処理を記述。
  • FS、OFSはそれぞれ、入力、出力CSVファイルの列区切りを示す文字の指定
  • printは文字列の出力
  • {}で囲まれた部分は読み込んだCSVファイル1行にたいして行う処理
  • print $1,$2,$3,$4,$8 はCSVファイルの1,2,3,4,8列目を出力
というような感じです。


■AWKのインストール方法

私はもう少し古いバージョンを使っているのですが、今からAWKを入手する場合

等からファイルをダウンロードすればいいでしょう。
ダウンロード後解凍し、任意のフォルダにコピーするだけでOKです。
以下

C:\AWK

というフォルダにファイル一式をコピーした前提で記述します。


■AWKプログラムの実行方法

上記のようなAWKプログラムを例えばC:\TG\DEN.AWK のようにテキストファイルで保存しておきます。
入力元のCSVファイルをC:\TGフォルダのDE.CSV、処理結果をDEN.TXTファイルに出力する場合、以下のようにコマンドプロンプトから実行すればOKです。

CD C:\TG
C:\AWK\GAWK -f DEN.AWK DE.CSV >DEN.TXT


■まとめ

上記の通りAWKはテキスト処理に特化しており、CSVファイル処理に向く言語です。無料で実行環境も簡単に作れますので、TARGETで出力されるCSVファイル処理を考えている人は試してみてください。

なお私はAWKは以下の書籍で勉強しましたが、現在は入手困難のようです。







【競馬プログラミングの最新記事】
posted by knaka at 09:06 | 競馬プログラミング | このブログの読者になる | 更新情報をチェックする
ブログパーツ
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。