ひらめの日常

日常のメモをつらつらと

データ前処理で使うLinuxコマンドをまとめる

コマンドで分析する理由

データを処理するときに、やろうと思えばfinderから確認したり、エクセルで開いたりすることはできます。ですが、非常にファイルが大きくなり数GB程度にもなると、GUIで確認するのは非常に困難です。
実際に自分も1GB程度のデータが書き込まれたcsvファイルをエクセルで開こうとしましたが、エクセルがカクカクしてろくに作業することもできませんでした。

そう言った意味でも、CUIからデータを閲覧、操作できるようにしておきましょう。

ファイル閲覧

  • cat:ファイルを閲覧する。ファイルの中身全てがコマンドに表示されるので、大きなデータだと非常に読みにくくなります。
  • head:ファイル先頭10行表示する。
  • tail:データをファイル末尾10行表示する。
  • less:ファイルの中身を1画面後のに表示するコマンド。

文字コードの確認, 変更

①現在の文字コードを調べる
env | grep LANG で、現在の環境を読み込み、その中からgrepコマンドで文字コード設定のもののみを抽出します。

nkfコマンドを使う

  • ファイルの文字コードを確認する
    nkf -g hoge.csv
  • ファイルの文字コードUTF-8に変更して別ファイルに書き出す
    nkf -w hoge.csv > hoge_utf-8.csv

ここで、別ファイルに書き出す理由は、データ加工を間違えたときに元データからやり直せるようにするためです。

データの加工

①データを取得する
curl -s http://hoge > hoge.jsonと打って、APIからデータをダウンロードしてきます。

②ファイルを確認する
jsonファイルを取得したとします。jqコマンド(別途ダウンロードが必要です)を使うと、jsonファイルが見やすくなります。

# 例)hoge.jsonファイルを、色付きで行番号もつけて閲覧
$ json . hoge.json -C | less -NR

③データの加工

  • sed:文字列の置換や行の削除を簡単に行えるもの。
# 例)1行目から26行目まで削除する。
$ sed -e '1, 26d' hoge.csv > hoge_deleted.csv
  • awkcsvやtsvに対して、必要なデータだけを抽出するのに便利なもの。
# 特定の条件を満たした対象に対して処理ができる。
$ awk -F 区切り文字 '条件 {実行文}' ファイル名' 

参考

こちらの本を参考にしました。

データサイエンティスト養成読本 登竜門編 (Software Design plus)

データサイエンティスト養成読本 登竜門編 (Software Design plus)