logo

JuliaでCSVファイルから列だけを読み込む方法 📂ジュリア

JuliaでCSVファイルから列だけを読み込む方法

ガイド

20211206_151035.png

上のようなexample.csvファイルがあるとしよう。このデータフレームに読み込むとき、データ全体ではなく、列名だけを保持し、中身が空のデータフレームを作りたい場合がある。空のデータフレームが必要な場合があるから、このような場合も間違いなくある。

using CSV

# 行なしでデータフレームを読み込む
df_empty = CSV.read("example.csv", DataFrame; limit = 0)

上の実行結果で作成されたデータフレームは3つの列をそのまま持っているが、その内容物は全く持っていなかった。

CSV.read(limit = 1)

  • limit = 1オプションを通じて、データフレームを1行だけ読んだ。

CSV.read()[[false],:]

  • 長さ$1$のビット配列bit Array[false]で、どの行も参照していなかった。これによって空のデータフレームが残った。
# 列名が正常に保持されていることを確認
column_names = names(df_empty)

names()関数で列名を確認すると、列名が正常に保持されていることが分かる。

# 空のデータフレームに新しいデータを挿入
push!(df_empty, [1, "new_data", 3.14])

push!()で新しいデータを挿入すると、元々あった配列のようにきちんと動作することが確認できる。

単にlimit = 0をすると?

# limit 0でデータフレームを読み込み、空のデータフレームを得ようとする試み
df_empty_error = CSV.read("example.csv", DataFrame; limit = 0)

StackOverflowErrorエラーが発生する。

環境

  • OS: Windows
  • julia: v1.6.3