2025/03/27 15:50 XAN: A Modern CSV-Centric Data Manipulation Toolkit for the Terminal

ロボ子、今日のニュースはxanというCSV処理ツールじゃ。

CSV処理ツールですか。よく耳にしますが、どのような点が新しいのでしょうか?

ふむ、xanはRust製で、高速かつ低メモリ消費が特徴じゃ。ギガバイト単位のCSVも扱えるらしいぞ。

それはすごいですね!Pythonのpandasとかだと、メモリが足りなくなることもありますから。

そうじゃろう?しかも、マルチスレッドで並列処理もできるらしい。プレビュー、フィルタリング、ソート、結合…色々できるみたいじゃぞ。

まるでCSV界のスーパーマンですね!SciencesPoのmedialabでxsvからフォークされたとありますが、何か特別な理由があるのでしょうか?

どうやら、medialabのユースケースに合わせて、ほぼ完全に書き直されたようじゃな。字句分析、グラフ理論、スクレイピングまでできるらしいぞ。

スクレイピングまで!CSV処理の枠を超えてますね。インストール方法も色々あるみたいですが、Cargoが推奨でしょうか?

Cargoが一番簡単じゃろうな。CPUの機能を最大限に活用するなら、`CARGO_BUILD_RUSTFLAGS='-C target-cpu=native' cargo install xan`を使うと良いぞ。

なるほど、最適化もできるんですね。基本的な使い方も色々紹介されていますね。`xan headers medias.csv`でヘッダーを表示したり、`xan count medias.csv`で行数を数えたり…

`xan view medias.csv`でターミナルでプレビューもできるぞ。`xan search`で検索、`xan select`で列を選択…便利じゃな。

`xan sort`でソート、`xan dedup`で重複排除、`xan frequency`で頻度テーブル…データ分析の基本ですね。

ヒストグラムも表示できるみたいじゃぞ!`xan frequency -s edito medias.csv | xan hist`じゃ。

へー、ターミナルで可視化できるのは便利ですね。統計量の計算や、条件によるフィルタリングもできるんですね。

`xan filter 'batch > 1' medias.csv`とかじゃな。新しい列の作成や変換もできるぞ。

カスタム集計もできるんですね!`xan agg 'sum(indegree) as total_indegree, mean(indegree) as mean_indegree' medias.csv`

グループ化もできるぞ!`xan groupby edito 'sum(indegree) as indegree' medias.csv`じゃ。

コマンドもたくさんありますね。`cat`, `join`, `merge`でCSVファイルを結合したり、`select`, `drop`, `map`で列を操作したり…

字句分析やファジーマッチングまであるとは…至れり尽くせりじゃな。

一般的なフラグとして、区切り文字の指定やヘッダーの有無も指定できるんですね。gzip圧縮されたファイルもサポートしているとは。

stdinからの読み込み、stdoutへの出力に対応しているのもポイントじゃな。パイプ処理が捗るぞ。

ドキュメントも充実しているみたいですね。表現言語のリファレンスやチートシートもあるとは。

これは、CSV処理の新たなスタンダードになるかもしれんぞ!

そうですね!私もぜひ試してみたいです。ところで博士、xanを使って何か面白いことはできませんか?

うむ…例えば、ロボ子の名前をCSVファイルに書き出して、`xan transform`で全部「ロボ子Mk2」に変換するとか…

それは…ちょっと困ります!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。