廿TT

譬如水怙牛過窓櫺 頭角四蹄都過了 因甚麼尾巴過不得

AWK:csv ファイルから欠測値を取り出す

はじめに

実務で扱うデータにはしばしば欠測値が含まれます。

例えばこんな csv ファイルがあったりします。

1, 2, 3
1, 2
1, 2, 3
1, 2, 3
1, 2

3列の行と2列の行が混在しています。

このような列数が不揃いのファイルをそのままエクセルなどの表計算ソフトで処理しようとするとちょっと手間です。

AWK というプログラミング言語を用いるとこのデータを3行のファイルと2行のファイルに分割することができます。

実践

やってみましょう。

上記のデータが "test.csv" というファイル名で保存されていたとします。

3列の行だけを取り出すにはコマンドラインにこうタイプします。

awk -F , "NF >= 3" test.csv > out_3.csv

これで "out_3.csv" というファイルが作成されます。

中身はこうなっています。

1, 2, 3
1, 2, 3
1, 2, 3

2列の行だけを取り出すにはコマンドラインにこうタイプします。

awk -F , "NF < 3" test.csv > out_2.csv

"out_2.csv" というファイルが作成され、中身はこうなります。

1, 2
1, 2

解説

  • -F:ファイルの区切り文字の指定です。"-F ," でカンマ区切りになります。
  • NF:読み込んでいるデータの列数です。"NF >= 3" は3以上、"NF < 3" は3未満という意味です

これを組み合わせて、

awk -F , "NF >= 3" test.csv

は「カンマ区切りで列数が3以上の行を取り出せ」という意味になります。

ビッグデータの時代に AWK という武器を

AWK はエクセルとの相性がいいです。データの下処理や集計に活用することで、きっとお仕事が楽になると思います。

ガチのビッグデータには AWK は向いてませんが、「エクセルで開くと重いなー」くらいの規模ならサクサクです。

表計算と同じような感覚で扱え、はじめて学ぶプログラミング言語としても適しています。

以下のページなどを参考に、トライしてみてください。

参考文献

プログラミング言語AWK

プログラミング言語AWK

↑ぼくが持ってるのはこっちだが、

プログラミング言語AWK

プログラミング言語AWK

  • 作者: A.V.エイホ,P.J.ワインバーガー,B.W.カーニハン,足立高徳
  • 出版社/メーカー: USP研究所
  • 発売日: 2010/01/01
  • メディア: 単行本(ソフトカバー)
  • クリック: 1回
  • この商品を含むブログを見る
↑改訂版が出ているらしい。

関連エントリ


AWK:空行で区切られたファイルを処理する - 廿TT