CSVFiles(DataFrameとの連携)(書き方例)
◆パッケージ読み込み
using CSVFiles, DataFrames
◆DataFrameの読み込み
# CSVファイルの読み込み、DataFrameに格納
df = DataFrame(load("data.csv"))
# gzipファイルを読み込み、DataFrameに格納
df = DataFrame(load(File(format"CSV", "iris_data.csv.gz")))
◆読み込み時オプション設定
・区切り記号(delim)
・クォート文字(quotechar) (デフォルトはダブルクォーテーション)
・ヘッダー有無(header_exists) (デフォルトはheader_exists=true)
# オプション設定例
df = DataFrame(load(File(format"CSV", "data2.csv"); delim=';', quotechar='"', header_exists=false))
◆DataFrameの書き込み
# DataFrameをCSVファイルへ書き出し
save("df_output.csv", df)
# gzipで圧縮されたCSVファイルを書き出す
save(File(format"CSV", "output2.csv.gz"), df)
◆書き込み時オプション設定
・区切り記号(delim)
・クォート文字(quotechar) (デフォルトはダブルクォーテーション)
・ヘッダー有無(header_exists) (デフォルトはheader_exists=true)
・欠損値の設定(nastring) (デフォルトは"NA")
# オプション設定例
save(File(format"CSV", "output3.csv"), df; delim=',', quotechar='"', nastring="NA", header=true)
◆pipe記法による読み込み、書き込み
# 読み込みの記載方法
df = load("data2.csv") |> DataFrame
# 書き込みの記載方法
df |> save("output.csv")
◆Matrix型への変換
# DataFrameをMatrixへ変換
data_matrix = Matrix(df)
◆配列からのDataFrame作成
# 配列(Vector型)をDataFrameに変換する
# [1, 2, 3, 4, 5]
# 方法(1)
df = DataFrame()
df.a = [1, 2, 3, 4, 5]
# 方法(2)
df = DataFrame(b = [1, 2, 3, 4, 5])
解説
Juliaでは、CSVファイルを読み込み、DataFrameにデータをセットすることができます。
これを行う際には、CSVFilesパッケージをインストールします。
CSVファイルからの読み込みだけでなく、CSVファイルへの出力もできます。
(1)CSVFiles.jl及びDataFrames.jlのインストール
以下の手順でCSVFiles及びDataFramesパッケージをインストールします。
パッケージ管理モードでインストールを行います。
Juliaの対話型実行環境で角括弧文字の ] を押下してパッケージモードにします。
add "CSVFiles"
と入力してCSVFilesパッケージをインストールします。
(ダブルクォーテーションは無くても良いです)
もしDataFramesパッケージをインストールしていない場合は、合わせてインストールを行います。
add "DataFrames"
と入力してDataFramesパッケージをインストールして下さい。
(2)CSVFilesの使い方
CSVFilesで使用できる機能や使い方を説明します。
①CSVファイルを読み取り、DataFrameに格納する
CSVファイルの読み込みを行い、取得データをDataFrameに格納します。
以下のようにloadメソッドで実行します。
using CSVFiles, DataFrames
# CSVファイルの読み込み、DataFrameに格納
df = DataFrame(load("data.csv"))
実行結果です(ここではiris_data.csvを読み込みました)。
②gzipファイルを読み込み、DataFrameに格納する
CSVファイルが.gzに圧縮されたファイルの場合、以下のメソッドで読み込みを実行できます。format属性でCSV形式であることを指定しています。
using CSVFiles, DataFrames
# gzipファイルを読み込み、DataFrameに格納
df = DataFrame(load(File(format"CSV", "iris_data.csv.gz")))
③読み込み時オプション設定
様々なオプションを設定することができます。
拡張子指定
拡張子が.csvでないCSVファイルを読み込む場合は、その拡張子を含むファイル名を指定できます。
load(File(format"CSV", "csv_file.txt"))
区切り記号(delim)
区切り記号を指定する場合は、delimを使用して指定します。
df = DataFrame(load(File(format"CSV", "data2.csv"); delim=';'))
クォート文字(quotechar)
CSVデータのクォート文字を指定することができます。
クォート文字とは、各データの前後を括っている記号です。
デフォルトでは["]ダブルクォーテーションです。
df = DataFrame(load(File(format"CSV", "data2.csv"); quotechar='"'))
CSVデータがシングルクォーテーションの場合は、以下のように設定します。
df = DataFrame(load(File(format"CSV", "data3.csv"); quotechar='''))
ヘッダー有無(header_exists)
CSVデータの先頭行がヘッダー行であるか、そうでないかを指定します。
ヘッダー行である場合は、header_exists=trueです。デフォルトではこちらが採用されます。
ヘッダー行のない場合は、header_exists=falseと指定します。
df = DataFrame(load(File(format"CSV", "data4.csv"); header_exists=false))
④DataFrameをCSVファイルに書き出す(保存する)
DataFrameをファイルに保存する場合は、以下のように実行します。
using CSVFiles, DataFrames
# DataFrameのデータ
df = DataFrame(num = [1, 2, 3], fruit = ["apple","orange","lemmon"], price = [100, 200, 150])
# DataFrameをCSVファイルへ書き出し
save("df_output.csv", df)
⑤gzipで圧縮されたCSVファイルを書き出す
DataFrameを書き出したCSVファイルをgzip形式で圧縮し生成するには、以下のように実行します。
using CSVFiles, DataFrames
df = DataFrame(num = [1, 2, 3], fruit = ["apple","orange","lemmon"], price = [100, 200, 150])
# gzipで圧縮されたCSVファイルを書き出す
save(File(format"CSV", "output2.csv.gz"), df)
⑥書き込み時オプション設定
読み込みと同様に、書き込み処理でも様々なオプションを設定することができます。
以下はオプションを同時に設定した際のコーティング例です。
save(File(format"CSV", "output3.csv"), df; delim=',', quotechar='"', nastring="NA", header=true)
欠損値の設定(nastring)
欠損値取り扱いについて、これをどのような文字列で保持するかを設定します。
デフォルトでは"NA"です。
上記以外の設定項目は、読み込みの説明項目をご参照下さい。
(3)pipe記法による読み込み、書き込みの記載方法
pipe(パイプ)記法(記号:[|>])により、より簡潔な記述ができます。
読み込み、書き込みそれぞれで以下のように記述します。
①読み込みの記載方法
CSVファイルからデータを読み込み、DataFrameに変換します。
using CSVFiles, DataFrames
df = load("data2.csv") |> DataFrame
②書き込みの記載方法
DataFrameのデータをファイルに書き出すには、以下のように実行します。
using CSVFiles, DataFrames
df = DataFrame(num = [1, 2, 3], fruit = ["apple","orange","lemmon"], price = [100, 200, 150])
df |> save("output.csv")
(4)Matrix型への変換
取得したDataFrame型のデータをMatrix型へ変換する場合は、Matrix関数を使用できます。
df = DataFrame(load(File(format"CSV", "test.csv"); delim=',', header_exists=false))
data_matrix = Matrix(df)
(5)配列からのDataFrame作成
配列(Vector型)の配列をDataFrameに変換する方法は以下のような例がありますが、その他にも方法がありますので、詳細は下記のJuliaのDataFrames.jlドキュメントをご参照頂ければと思います。
方法(1)
# DataFrameを宣言
df = DataFrame()
# dfの列名"a"に配列をセットする
df.a = [1, 2, 3, 4, 5]
方法(2)
# DataFrame宣言と列"b"のセットを同時に実行する
df = DaraFrame(b = [1, 2, 3, 4, 5])
以上、CSVFilesを使用したCSVファイルの取扱方法を解説しました。
JuliaのCSVFiles及びDataFrameパッケージの機能はこれ以外にもありますので、さらなる詳細は以下のマニュアルなどをご参照下さい。
CSVFiles.jlのドキュメント(Github)
https://github.com/queryverse/CSVFiles.jl
DataFrames.jlのドキュメント
https://dataframes.juliadata.org/stable/
もくじ
Julia早引きノート[01]変数・定数の使い方
Julia早引きノート[02]算術式、演算子
Julia早引きノート[03]複素数
Julia早引きノート[04]正規表現
....
もくじを開く
Julia早引きノート[05]if文
Julia早引きノート[06]ループ処理
Julia早引きノート[07]try, catch, finally
Julia早引きノート[08]変数の型(Int, Float, Bool, Char, String)
Julia早引きノート[09]関数 (1)基本編
Julia早引きノート[10]関数 (2)応用編
Julia早引きノート[11]Nothing型
Julia早引きノート[12]複合型(Composite Type)型
Julia早引きノート[13]タプル
Julia早引きノート[14]リスト(Array型一次元配列)
Julia早引きノート[15]辞書(dictionary)
Julia早引きノート[16]集合
Julia早引きノート[17]多次元配列 (1)初期化
Julia早引きノート[18]多次元配列 (2)様々な演算や関数
Julia早引きノート[19]多次元配列 (3)サブ配列
Julia早引きノート[20]ファイル入出力
Julia早引きノート[21]JSON、XMLファイルの入出力
Julia早引きノート[22]Python関数やPythonモジュールの呼び出し
Julia早引きノート[23]JuliaでのMatplotlibによるグラフ描画
Julia早引きノート[24]CSVFiles(DataFrameとの連携)
Julia早引きノート[25]線形代数演算(ベクトル・行列計算)
(※引き続きコンテンツを増やしていきます)
関連情報
CSVFiles.jlのドキュメント(Github)
https://github.com/queryverse/CSVFiles.jl
Julia - 公式ページ
https://julialang.org/
Julia - 日本語公式ドキュメント
https://julia-doc-ja.readthedocs.io/ja/latest/index.html
初めてのJuliaとインストール (Windows & Linux)
https://qiita.com/ttlabo/items/b05bb43d06239f968035
Julia - Mathematics
https://docs.julialang.org/en/v1/base/math/
ご意見など
ご意見、間違い訂正などございましたらお寄せ下さい。