Импорт и экспорт данных (ввод-вывод)
CSV-файлы
Для чтения и записи табличных данных из CSV и других разделенных текстовых файлов следует использовать пакет CSV.jl.
Если вы раньше не использовали пакет CSV.jl, может понадобиться сначала установить его:
using Pkg
Pkg.add("CSV")
Функции CSV.jl не загружаются автоматически и должны быть импортированы в сеанс.
using CSV
Теперь набор данных можно считать из CSV-файла по пути input, используя
DataFrame(CSV.File(input))
DataFrame можно записать в CSV-файл по пути output, используя
df = DataFrame(x=1, y=2)
CSV.write(output, df)
Поведение функций CSV можно настроить с помощью именованных аргументов. Дополнительные сведения см. в описании ?CSV.File, ?CSV.read, ?CSV.write или в онлайн-документации по CSV.jl.
В простых случаях, когда задержка компиляции CSV.jl может быть проблемой, можно использовать модуль DelimitedFiles из стандартной библиотеки Julia. Далее приведен пример, показывающий, как считывать данные и выполнять их последующую обработку.
julia> using DelimitedFiles, DataFrames
julia> path = joinpath(pkgdir(DataFrames), "docs", "src", "assets", "iris.csv");
julia> data, header = readdlm(path, ',', header=true);
julia> iris_raw = DataFrame(data, vec(header))
150×5 DataFrame
 Row │ SepalLength  SepalWidth  PetalLength  PetalWidth  Species
     │ Any          Any         Any          Any         Any
─────┼──────────────────────────────────────────────────────────────────
   1 │ 5.1          3.5         1.4          0.2         Iris-setosa
   2 │ 4.9          3.0         1.4          0.2         Iris-setosa
   3 │ 4.7          3.2         1.3          0.2         Iris-setosa
   4 │ 4.6          3.1         1.5          0.2         Iris-setosa
   5 │ 5.0          3.6         1.4          0.2         Iris-setosa
   6 │ 5.4          3.9         1.7          0.4         Iris-setosa
   7 │ 4.6          3.4         1.4          0.3         Iris-setosa
   8 │ 5.0          3.4         1.5          0.2         Iris-setosa
  ⋮  │      ⋮           ⋮            ⋮           ⋮             ⋮
 144 │ 6.8          3.2         5.9          2.3         Iris-virginica
 145 │ 6.7          3.3         5.7          2.5         Iris-virginica
 146 │ 6.7          3.0         5.2          2.3         Iris-virginica
 147 │ 6.3          2.5         5.0          1.9         Iris-virginica
 148 │ 6.5          3.0         5.2          2.0         Iris-virginica
 149 │ 6.2          3.4         5.4          2.3         Iris-virginica
 150 │ 5.9          3.0         5.1          1.8         Iris-virginica
                                                        135 rows omitted
julia> iris = identity.(iris_raw)
150×5 DataFrame
 Row │ SepalLength  SepalWidth  PetalLength  PetalWidth  Species
     │ Float64      Float64     Float64      Float64     SubStrin…
─────┼──────────────────────────────────────────────────────────────────
   1 │         5.1         3.5          1.4         0.2  Iris-setosa
   2 │         4.9         3.0          1.4         0.2  Iris-setosa
   3 │         4.7         3.2          1.3         0.2  Iris-setosa
   4 │         4.6         3.1          1.5         0.2  Iris-setosa
   5 │         5.0         3.6          1.4         0.2  Iris-setosa
   6 │         5.4         3.9          1.7         0.4  Iris-setosa
   7 │         4.6         3.4          1.4         0.3  Iris-setosa
   8 │         5.0         3.4          1.5         0.2  Iris-setosa
  ⋮  │      ⋮           ⋮            ⋮           ⋮             ⋮
 144 │         6.8         3.2          5.9         2.3  Iris-virginica
 145 │         6.7         3.3          5.7         2.5  Iris-virginica
 146 │         6.7         3.0          5.2         2.3  Iris-virginica
 147 │         6.3         2.5          5.0         1.9  Iris-virginica
 148 │         6.5         3.0          5.2         2.0  Iris-virginica
 149 │         6.2         3.4          5.4         2.3  Iris-virginica
 150 │         5.9         3.0          5.1         1.8  Iris-virginica
                                                        135 rows omitted
Обратите внимание, что в нашем примере
- 
header— этоMatrix, поэтому мы должны были передатьvec(header)в конструкторDataFrame; - 
мы транслировали функцию
identityчерез фрейм данныхiris_raw, чтобы выполнить сужениеeltypeстолбцовiris_raw. Причина в том, что данные, считанные функциейreaddlm, хранятся вdataMatrix, поэтому все столбцы вiris_rawизначально имеют одинаковый типeltype— в данном случае он должен иметь значениеAny, поскольку некоторые столбцы являются числовыми, а некоторые — строковыми. 
Все эти операции (и многие другие) пакет CSV.jl обрабатывает автоматически.
Аналогично, вы можете использовать функцию writedlm из модуля DelimitedFiles, чтобы сохранить фрейм данных следующим образом:
writedlm("test.csv", Iterators.flatten(([names(iris)], eachrow(iris))), ',')
Как видно, код, необходимый для преобразования iris в нужные входные данные для функции writedlm с целью создания CSV-файла ожидаемого формата, не так прост. Поэтому CSV.jl является предпочтительным пакетом для записи CSV-файлов для данных, хранящихся во фреймах данных.
Другие форматы
Другие форматы данных поддерживаются для чтения и записи в следующих пакетах (список не является исчерпывающим):
- 
Apache Arrow (включая Feather версии 2): Arrow.jl
 - 
Apache Feather (версия 1): Feather.jl
 - 
Apache Avro: Avro.jl
 - 
JSON: JSONTables.jl
 - 
Parquet: Parquet2.jl
 - 
Stata, SAS и SPSS: ReadStatTables.jl (или пользователи Queryverse могут выбрать StatFiles.jl)
 - 
Чтение файлов данных R (.rda, .RData): RData.jl
 - 
Microsoft Excel (XLSX): XLSX.jl
 - 
Копирование или вставка в буфер обмена для отправки данных в электронные таблицы и из них: ClipData.jl