diff --git a/docs/src/man/importing_and_exporting.md b/docs/src/man/importing_and_exporting.md index 35cf19b9b..bac495545 100644 --- a/docs/src/man/importing_and_exporting.md +++ b/docs/src/man/importing_and_exporting.md @@ -113,6 +113,56 @@ As you can see the code required to transform `iris` into a proper input to the format is not easy. Therefore CSV.jl is the preferred package to write CSV files for data stored in data frames. +## JLD2 Files + +JLD2 is a HDF5-compatible file format that allows reading and writing data frames. +A valuable feature of JLD2 format is that it preserves custom column types of the stored data frame. + +The `save` and `load` functions, provided by FileIO.jl, allow to read/write a data frame from/to a JLD2 file. + +A data frame can be saved as a JLD2 file output.jld2 using + +If you have not used the FileIO and JLD2 packages before then you may need to install it first: +```julia +using Pkg; +Pkg.add("FileIO") +Pkg.add("JLD2") +``` + +The FileIO and JLD2 functions are not loaded automatically and must be imported into the session. +```julia +using FileIO +using JLD2 +``` + +We can now create a simple data frame and save it as a jld2 file using `save`. `save` +accepts an AbstractDict yielding the key/value pairs, where the key is a string representing +the name of the dataset and the value represents its contents: + +```julia +df = DataFrame(x=1, y=2) +save("output.jld2", Dict("df" => df)) +``` + +A jld2 file can be read in using `load`. If `load` is called with a single dataset name, +load returns the contents of that dataset from the file: +```julia +df = load("output.jld2", "df") +1×2 DataFrame + Row │ x y + │ Int64 Int64 +─────┼────────────── + 1 │ 1 2 +``` + +If `load` is called with a filename argument only, the load function loads all datasets +from the given file into a Dict: +```julia +df = load("output.jld2") +Dict{String, Any} with 1 entry: + "df" => 1×2 DataFrame… +``` + ## Other formats Other data formats are supported for reading and writing in the following packages