はじめに
この記事は2023年7月16日時点の記事であり、半年後や1年後にはあまり役に立たない可能性が高いです。あくまで現時点での回避策だと思ってください。
みなさん、Polarsはご存じですか?
Pandasを置き換えるかもしれないと言われている、Rustで実装された新しい高速なデータフレームライブラリです。PolarsにはRubyのバインディングもあって、Ankaneさんが開発・メンテナンスを行っています。
このPolarsでCSVファイルを読み込むと次のようになります。
require "csv"
df = Polars.read_csv("iris.csv")
=>
shape: (150, 5)
┌──────────────┬─────────────┬──────────────┬─────────────┬───────────┐
│ sepal.length ┆ sepal.width ┆ petal.length ┆ petal.width ┆ variety │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ f64 ┆ f64 ┆ f64 ┆ f64 ┆ str │
╞══════════════╪═════════════╪══════════════╪═════════════╪═══════════╡
│ 5.1 ┆ 3.5 ┆ 1.4 ┆ 0.2 ┆ Setosa │
│ 4.9 ┆ 3.0 ┆ 1.4 ┆ 0.2 ┆ Setosa │
│ 4.7 ┆ 3.2 ┆ 1.3 ┆ 0.2 ┆ Setosa │
│ 4.6 ┆ 3.1 ┆ 1.5 ┆ 0.2 ┆ Setosa │
│ … ┆ … ┆ … ┆ … ┆ … │
│ 6.3 ┆ 2.5 ┆ 5.0 ┆ 1.9 ┆ Virginica │
│ 6.5 ┆ 3.0 ┆ 5.2 ┆ 2.0 ┆ Virginica │
│ 6.2 ┆ 3.4 ┆ 5.4 ┆ 2.3 ┆ Virginica │
│ 5.9 ┆ 3.0 ┆ 5.1 ┆ 1.8 ┆ Virginica │
└──────────────┴─────────────┴──────────────┴─────────────┴───────────┘
このように、すべての行が表示されず、先頭から4行、末尾から4行が表示されます。
つまり、合計で最大で8程度のレコードしか表示されないということになります。これでは少し不便ではないでしょうか?
(余談ですが、平均的な知能の人間では、頭の中で考えられることは7個前後が限界だと言われています。そういう意味ではこのデザインは人間の認知に沿った使いやすいデザインとなっていると言えるかもしれません)
すべての列を表示するにはどうすればよいか?
Pythonでは、set_tbl_rows
というメソッドが用意されていますが、その実装を見ると、環境変数を設定しています。
ENV["POLARS_FMT_MAX_ROWS"] = "10000"
上のように設定すれば、10000行表示してくれるはずです。この環境変数は、irb
の実行中であっても変更することが可能です。将来的にはRubyのPolarsバインディングにも Config モジュールが用意される予定だそうです。
参考文献
この記事は以上です。