JuliaからCSV形式のデータを扱うには、CSVパッケージとDataFramesパッケージが必要になる。
JuliaのREPLでCSVパッケージとDataFramesパッケージを追加する。
julia> using Pkg
julia> Pkg.add("CSV")
julia> Pkg.add("DataFrames")
パッケージの追加は、Juliaのインストール後に一度だけ行えばよい。プログラムを実行するたびに追加する必要はない。
CSVファイルからデータを読み込むには、read関数を使う。特定の列を抽出するには、1から始まる列番号を指定する。
using CSV
using DataFrames
df = CSV.read("/home/tsuka/quotes.csv", DataFrame)
dates = df[!,1]
names = df[!,2]
println(dates)
println(names)
CSVファイルにヘッダ行があれば、抽出する列を列名で指定することもできる。
using CSV
using DataFrames
df = CSV.read("/home/tsuka/quotes.csv", DataFrame)
println(df.Date)
println(df.Name)
Julia言語でデータフレームをCSV形式でファイルへ書き込む例を次に示す。
using CSV
using DataFrames
df = DataFrame(Name = ["Sana","Kokona","Neo"], Age = [16,15,14])
CSV.write("C:\\Users\\tsuka\\Documents\\example.csv", df)
パイピング演算子を使って、次のように記述することもできる。
using CSV
using DataFrames
df = DataFrame(Name = ["Sana","Kokona","Neo"], Age = [16,15,14])
df |> CSV.write("C:\\Users\\tsuka\\Documents\\example.csv")
CSV.write()には、次に示すオプション引数を指定できる。
append引数にtrueを指定すると、既存のCSVファイルにデータが追加される。このとき、ヘッダ行があらためて追加されることはない。
既存のCSVファイルにデータを追加する例を次に示す。
using CSV
using DataFrames
df = DataFrame(Name = ["Sana","Kokona","Neo"], Age = [16,15,14])
CSV.write("C:\\Users\\tsuka\\Documents\\example.csv", df, append=true)
using CSV
using DataFrames
df = DataFrame(Name = ["Sana","Kokona","Neo"], Age = [16,15,14])
CSV.write("C:\\Users\\tsuka\\Documents\\example.csv", df, bom=true)
区切り文字をタブにする例を次に示す。
using CSV
using DataFrames
df = DataFrame(Name = ["Sana","Kokona","Neo"], Age = [16,15,14])
CSV.write("C:\\Users\\tsuka\\Documents\\example.csv", df, delim="\t")
※タブで区切ったデータ形式はTSV (Tab Separated Values) と呼ばれる。
CSVファイルの改行コードをCRLFにする例を次に示す。
using CSV
using DataFrames
df = DataFrame(Name = ["Sana","Kokona","Neo"], Age = [16,15,14])
CSV.write("C:\\Users\\tsuka\\Documents\\example.csv", df, newline="\r\n")
Microsoft Excelが読み込めるCSVは、Shift JISまたはBOM (byte order mark) ヘッダ付きUTF-8でエンコードする必要がある。BOMヘッダが無いUTF-8でエンコーディングされたCSVをMicrosoft Excelで読み込むと文字化けする。
Quinn, Jacob. (2015) JuliaData / CSV.jl
Quinn, Jacob. (2015) CSV.jl Documentation
IETF (2005) "Common Format and MIME Type for Comma-Separated Values (CSV) Files" RFC 4180