0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Excel ピボットテーブルみたいなことができる miller(mlr コマンド)!

Posted at

私はログ分析のための集計に Excel のピボットテーブルをよく使っています。

大量データを望みの切り口で見るのに便利ですよね。

ですが、ふと思ったのです。毎回手で作ってるけどシェルでできたっておかしくないはず。その疑問を AI にぶつけた結果教えてもらったのが miller(mlr コマンド)です!

めちゃくちゃ簡単に集計処理をシェルの中に組み込んで自動化できます。

サンプルを使ってできることを紹介します。

まずは公式情報です。

README やマニュアルが充実しているので、気になった方は一度覗いてみてください。インストール方法も書いてあります。

コマンド名は mlr です。
サブコマンド方式で集計したり、条件でデータを絞ったり、列を絞ったりなどの使い分けができます。
また、それらをパイプでつなぎ組み合わせて柔軟なデータ加工が実現できます。

それでは、具体例を見ていきましょう!


stats1:ピボットの核(集計)

「カテゴリごとの合計金額」を出したい場合。

mlr stats1 -a sum -f amount -g category data.csv

オプションの意味は以下の通りです。

  • -g category : 集計の軸(Excel ピボットの行ラベル)
  • -a sum -f amount : 合計を取る列

出力例

category,amount_sum
A,250
B,550

軸は複数指定できる

-g には カンマ区切りで複数の軸 を指定できます。

たとえば「ユーザー × カテゴリ」ごとの合計を出す場合は次のように書けます。

mlr stats1 -a sum -f amount -g user,category data.csv
user,category,amount_sum
Alice,A,100
Alice,B,200
Bob,A,150
Bob,B,350

Excel のピボットで「行ラベルを2段にする」イメージです。


filter:条件でデータを絞る

「Alice のデータだけにしたい」場合。

mlr filter '$user == "Alice"' data.csv

出力例

user,category,amount
Alice,A,100
Alice,B,200

Excel でいう「フィルタ」相当です。


cut:使う列だけに絞る

「集計に必要な列だけ残したい」場合。

mlr cut -f category,amount data.csv

出力例

category,amount
A,100
B,200
A,150
B,300
B,50

組み合わせて使う(ここが便利)

Excel でもよくやるように、

条件で絞ってからピボットを作る

ことが、miller でもそのまま書けます。

例:Alice のデータだけでカテゴリ別合計

mlr filter '$user == "Alice"' data.csv \
  | mlr stats1 -a sum -f amount -g category

出力例

category,amount_sum
A,100
B,200

入出力フォーマットも柔軟

miller は CSV だけでなく、

  • CSV
  • TSV
  • JSON
  • YAML

などを入力にできます。

また、出力を

  • CSV
  • JSON
  • Markdown テーブル

などに変換できます。

mlr --icsv --omd stats1 -a sum -f amount -g category data.csv

↑ これで Markdown 表が出力されます。

  • -icsv : CSV 形式で入力する
  • -omd : Markdown 表で出力する

まとめ

  • miller は Excel ピボットテーブルでやるような以下の操作をシェルのコマンドで分解して書けるツール
    • 条件で絞る
    • 列を選ぶ
    • 集計する
  • コマンドをシェルに書くことで以下できる
    • 自動化
    • 条件や集計内容の再現性の確保

Excel のピボットテーブルみたいなことをシェルでやりたいときに miller を使っています。
一方で分析の切り口を試行錯誤するときや他人に提出するときは、Excel を使い分けるのが良さそうですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?