Сообщество Engee

День 3 Летней школы Julia

Автор
avatar-nkapyrinnkapyrin
Notebook

Установка пакетов

In [ ]:
Pkg.add(["CSV", "MAT", "DataFrames", "MATLAB", "FileIO", "EzXML", "ImageShow", "Images", "ImageMorphology", "Noise", "ImageBinarization", "ImageDraw", "TickTock"])

DataFrames

Пакет DataFrames.jl предоставляет инструментарий для работы с
табличными данными в Julia. Это отличное и
универсальное средство для анализа и обработки данных.

Пакет DataFrames.jl занимает центральное место в экосистеме
Julia для работы с данными и тесно интегрирован с рядом
других библиотек.

In [ ]:
using DataFrames

data = DataFrame(pet=["cat", "dog", "dog", "fish", "cat", "dog", "cat", "fish"],
                 children=[4., 6, 3, 3, 2, 3, 5, 4],
                 salary=[90, 24, 44, 27, 32, 59, 36, 27])
Out[0]:
8×3 DataFrame
Rowpetchildrensalary
StringFloat64Int64
1cat4.090
2dog6.024
3dog3.044
4fish3.027
5cat2.032
6dog3.059
7cat5.036
8fish4.027

Чтение и запись данных в различные типы файлов

In [ ]:
path = "$(@__DIR__)/";

CSV

In [ ]:
df = DataFrame(rand(10, 10), :auto)
Out[0]:
10×10 DataFrame
Rowx1x2x3x4x5x6x7x8x9x10
Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64
10.7135490.2442950.4690990.1146640.4219190.4893960.3282160.8338720.4313050.32421
20.9904060.3397910.6672240.9797170.873450.7993930.2779370.861150.9852370.861751
30.2620980.5147710.3029550.789850.5700340.05738170.2244560.1172960.2835560.197375
40.1027070.3499280.277940.04147960.6914870.613640.1795180.2790210.7114480.360672
50.8677280.4604030.2394480.1736160.1329120.7542570.7880610.677450.1966550.669204
60.8299530.4039690.5727930.6310770.01353060.2843510.1200530.2130550.01864590.102308
70.9878160.6657220.1987630.4005670.6973970.408280.8441380.08991920.3707550.809275
80.5711960.5224240.4070190.1375230.3225320.7744440.1824440.247640.4307860.00301039
90.5132080.7059180.3858650.1239910.2264830.6548080.6088740.1088720.1707260.960907
100.3100380.6805240.344980.226580.7940650.4646750.8903030.3891410.3194410.10413
In [ ]:
using CSV
In [ ]:
CSV.write(path * "Resources/data.csv", df)
Out[0]:
"/user/School/Resources/data.csv"
In [ ]:
Matrix(CSV.read(path * "Resources/data.csv", DataFrame))
Out[0]:
10×10 Matrix{Float64}:
 0.713549  0.244295  0.469099  0.114664   …  0.833872   0.431305   0.32421
 0.990406  0.339791  0.667224  0.979717      0.86115    0.985237   0.861751
 0.262098  0.514771  0.302955  0.78985       0.117296   0.283556   0.197375
 0.102707  0.349928  0.27794   0.0414796     0.279021   0.711448   0.360672
 0.867728  0.460403  0.239448  0.173616      0.67745    0.196655   0.669204
 0.829953  0.403969  0.572793  0.631077   …  0.213055   0.0186459  0.102308
 0.987816  0.665722  0.198763  0.400567      0.0899192  0.370755   0.809275
 0.571196  0.522424  0.407019  0.137523      0.24764    0.430786   0.00301039
 0.513208  0.705918  0.385865  0.123991      0.108872   0.170726   0.960907
 0.310038  0.680524  0.34498   0.22658       0.389141   0.319441   0.10413

TXT

In [ ]:
write(path * "Resources/data.txt", "Пример")
Out[0]:
12
In [ ]:
open(io->read(io, String), path * "Resources/data.txt")
Out[0]:
"Пример"

MAT

In [ ]:
using MATLAB, MAT
In [ ]:
mat"p = genpath($path); addpath(p);"
In [ ]:
a = [1 2 3]
mat"a=$a"
mat"save($path + string('Resources/data.mat'),'a')"
In [ ]:
b = matopen(path * "Resources/data.mat")
read(b, "a")
Out[0]:
1×3 Matrix{Int64}:
 1  2  3

JLD2

In [ ]:
using FileIO
In [ ]:
save(path * "Resources/example.jld2", Dict("A" => "test", "B" => 12))
In [ ]:
load(path * "Resources/example.jld2")
Out[0]:
Dict{String, Any} with 2 entries:
  "B" => 12
  "A" => "test"
In [ ]:
b = load(path * "Resources/example.jld2", "B")
Out[0]:
12

bin

In [ ]:
open("Resources/file.bin", "w") do io
    write(io, Int32(12))   # Запишем целое число типа Int32
    write(io, Float64(3.14))  # Запишем вещественное число типа Float64
    write(io, "Test\n")  # Запишем строку
end
Out[0]:
5
In [ ]:
open("Resources/file.bin", "r") do io
    num_int = read(io, Int32)  # Считаем целое число типа Int32
    num_float = read(io, Float64)  # Считаем вещественное число типа Float64
    str = String(read(io))  # Считаем оставшуюся часть файла как строку

    println("Целое число: ", num_int)
    println("Вещественное число: ", num_float)
    print("Прочитанная строка: ", str)
end
Целое число: 12
Вещественное число: 3.14
Прочитанная строка: Test

xml

In [ ]:
using EzXML
In [ ]:
using EzXML
doc = parsexml("""
<primates>
    <genus name="Homo">
        <species name="sapiens">Human</species>
    </genus>
    <genus name="Pan">
        <species name="paniscus">Bonobo</species>
        <species name="troglodytes">Chimpanzee</species>
    </genus>
</primates>
""")
# Сохраняем документ в файл
write("Resources/file.xml", doc)
Out[0]:
290
In [ ]:
open("Resources/file.xml", "r") do io
    str = String(read(io))
    println(str)
end
<?xml version="1.0" encoding="UTF-8"?>
<primates>
    <genus name="Homo">
        <species name="sapiens">Human</species>
    </genus>
    <genus name="Pan">
        <species name="paniscus">Bonobo</species>
        <species name="troglodytes">Chimpanzee</species>
    </genus>
</primates>