ุฌูˆู„ูŠุง. ุงู„ุนู…ู„ ู…ุน ุงู„ุฌุฏุงูˆู„


ุฌูˆู„ูŠุง ู‡ูŠ ูˆุงุญุฏุฉ ู…ู† ุฃุญุฏุซ ู„ุบุงุช ุงู„ุจุฑู…ุฌุฉ ุงู„ุฑูŠุงุถูŠุฉ ุŒ ุชุฏุนูŠ ุฃู†ู‡ุง ู„ุบุฉ ุงู„ุจุฑู…ุฌุฉ ุงู„ุฑุฆูŠุณูŠุฉ ููŠ ู‡ุฐุง ุงู„ู…ุฌุงู„. ู„ุณูˆุก ุงู„ุญุธ ุŒ ู„ุง ูŠูˆุฌุฏ ููŠ ุงู„ูˆู‚ุช ุงู„ุญุงู„ูŠ ู…ุง ูŠูƒููŠ ู…ู† ุงู„ุฃุฏุจ ุจุงู„ู„ุบุฉ ุงู„ุฑูˆุณูŠุฉ ุŒ ูˆุชุญุชูˆูŠ ุงู„ู…ูˆุงุฏ ุงู„ู…ุชุงุญุฉ ุจุงู„ู„ุบุฉ ุงู„ุฅู†ุฌู„ูŠุฒูŠุฉ ุนู„ู‰ ู…ุนู„ูˆู…ุงุช ู„ุง ุชุชูˆุงูู‚ ุฏุงุฆู…ู‹ุง ู…ุน ุงู„ุฅุตุฏุงุฑ ุงู„ุญุงู„ูŠ ุŒ ุจุณุจุจ ุงู„ุชุทูˆุฑ ุงู„ุฏูŠู†ุงู…ูŠูƒูŠ ู„ุฌูˆู„ูŠุง ุŒ ูˆู„ูƒู† ู‡ุฐุง ู„ูŠุณ ูˆุงุถุญู‹ุง ู„ู…ุจุฑู…ุฌูŠ ุฌูˆู„ูŠุง ุงู„ู…ุจุชุฏุฆูŠู†. ุณู†ุญุงูˆู„ ุณุฏ ุงู„ุซุบุฑุงุช ูˆู†ู‚ู„ ุฃููƒุงุฑ ุฌูˆู„ูŠุง ู„ู„ู‚ุฑุงุก ููŠ ุดูƒู„ ุฃู…ุซู„ุฉ ุจุณูŠุทุฉ.


ุงู„ุบุฑุถ ู…ู† ู‡ุฐู‡ ุงู„ู…ู‚ุงู„ุฉ ู‡ูˆ ุฅุนุทุงุก ุงู„ู‚ุฑุงุก ููƒุฑุฉ ุนู† ุงู„ุทุฑู‚ ุงู„ุฃุณุงุณูŠุฉ ู„ู„ุนู…ู„ ู…ุน ุงู„ุฌุฏุงูˆู„ ููŠ ู„ุบุฉ ุจุฑู…ุฌุฉ ุฌูˆู„ูŠุง ู„ุชุดุฌูŠุนู‡ู… ุนู„ู‰ ุงู„ุจุฏุก ููŠ ุงุณุชุฎุฏุงู… ู„ุบุฉ ุงู„ุจุฑู…ุฌุฉ ู‡ุฐู‡ ู„ู…ุนุงู„ุฌุฉ ุงู„ุจูŠุงู†ุงุช ุงู„ุญู‚ูŠู‚ูŠุฉ. ู†ูุชุฑุถ ุฃู† ุงู„ู‚ุงุฑุฆ ุนู„ู‰ ุฏุฑุงูŠุฉ ุจู„ุบุงุช ุงู„ุจุฑู…ุฌุฉ ุงู„ุฃุฎุฑู‰ ุŒ ู„ุฐู„ูƒ ู„ู† ู†ุนุทูŠ ุณูˆู‰ ุงู„ุญุฏ ุงู„ุฃุฏู†ู‰ ู…ู† ุงู„ู…ุนู„ูˆู…ุงุช ุญูˆู„ ูƒูŠููŠุฉ ุงู„ู‚ูŠุงู… ุจุฐู„ูƒ ุŒ ู„ูƒู†ู†ุง ู„ู† ู†ุฏุฎู„ ููŠ ุชูุงุตูŠู„ ุทุฑู‚ ู…ุนุงู„ุฌุฉ ุงู„ุจูŠุงู†ุงุช.


ุจุงู„ุทุจุน ุŒ ูˆุงุญุฏุฉ ู…ู† ุฃู‡ู… ุงู„ู…ุฑุงุญู„ ููŠ ุนู…ู„ ุจุฑู†ุงู…ุฌ ูŠู‚ูˆู… ุจุชุญู„ูŠู„ ุงู„ุจูŠุงู†ุงุช ู‡ูŠ ุงุณุชูŠุฑุงุฏู‡ุง ูˆุชุตุฏูŠุฑู‡ุง. ุนู„ุงูˆุฉ ุนู„ู‰ ุฐู„ูƒ ุŒ ูุฅู† ุชู†ุณูŠู‚ ุนุฑุถ ุงู„ุจูŠุงู†ุงุช ุงู„ุฃูƒุซุฑ ุดูŠูˆุนู‹ุง ู‡ูˆ ุฌุฏูˆู„. ู‡ู†ุงูƒ ู…ูƒุชุจุงุช ู„ุฌูˆู„ูŠุง ุชูˆูุฑ ุงู„ูˆุตูˆู„ ุฅู„ู‰ DBMS ุงู„ุนู„ุงุฆู‚ูŠุฉ ุŒ ูˆุชุณุชุฎุฏู… ุชู†ุณูŠู‚ุงุช ุงู„ุชุจุงุฏู„ ู…ุซู„ HDF5 ุŒ MATLAB ุŒ JLD. ูˆู„ูƒู† ููŠ ู‡ุฐู‡ ุงู„ุญุงู„ุฉ ุŒ ุณู†ูƒูˆู† ู…ู‡ุชู…ูŠู† ูู‚ุท ุจุชู†ุณูŠู‚ ุงู„ู†ุต ู„ุชู…ุซูŠู„ ุงู„ุฌุฏุงูˆู„ ุŒ ู…ุซู„ CSV.


ู‚ุจู„ ุงู„ู†ุธุฑ ููŠ ุงู„ุฌุฏุงูˆู„ ุŒ ุชุญุชุงุฌ ุฅู„ู‰ ุชู‚ุฏูŠู… ู…ู‚ุฏู…ุฉ ุตุบูŠุฑุฉ ู„ุนุฑุถ ู‡ูŠูƒู„ ุงู„ุจูŠุงู†ุงุช ู‡ุฐุง. ุจุงู„ู†ุณุจุฉ ุฅู„ู‰ ุฌูˆู„ูŠุง ุŒ ูŠู…ูƒู† ุชู…ุซูŠู„ ุงู„ุฌุฏูˆู„ ูƒู…ุตููˆูุฉ ุซู†ุงุฆูŠุฉ ุงู„ุฃุจุนุงุฏ ุฃูˆ ูƒุฅุทุงุฑ DataFrame.


ุงู„ู…ุตููˆูุงุช


ู„ู†ุจุฏุฃ ุจุงู„ุตูุงุฆู ููŠ ุฌูˆู„ูŠุง. ูŠุจุฏุฃ ุชุฑู‚ูŠู… ุงู„ุนู†ุงุตุฑ ุจุฑู‚ู… ูˆุงุญุฏ. ู‡ุฐุง ุฃู…ุฑ ุทุจูŠุนูŠ ุชู…ุงู…ู‹ุง ู„ู„ุฑูŠุงุถูŠูŠู† ุŒ ุจุงู„ุฅุถุงูุฉ ุฅู„ู‰ ุฐู„ูƒ ุŒ ูŠุชู… ุงุณุชุฎุฏุงู… ู†ูุณ ุงู„ู…ุฎุทุท ููŠ ููˆุฑุชุฑุงู† ุŒ ุจุงุณูƒุงู„ ุŒ ู…ุงุชู„ุงุจ. ุจุงู„ู†ุณุจุฉ ู„ู„ู…ุจุฑู…ุฌูŠู† ุงู„ุฐูŠู† ู„ู… ูŠุณุชุฎุฏู…ูˆุง ู‡ุฐู‡ ุงู„ู„ุบุงุช ู…ุทู„ู‚ู‹ุง ุŒ ู‚ุฏ ูŠุจุฏูˆ ู‡ุฐุง ุงู„ุชุฑู‚ูŠู… ุบูŠุฑ ู…ุฑูŠุญ ูˆูŠุณุจุจ ุฃุฎุทุงุก ุนู†ุฏ ูƒุชุงุจุฉ ุดุฑูˆุท ุงู„ุญุฏูˆุฏ ุŒ ูˆู„ูƒู† ููŠ ุงู„ูˆุงู‚ุน ุŒ ู‡ุฐู‡ ู…ุฌุฑุฏ ู…ุณุฃู„ุฉ ุงุนุชูŠุงุฏูŠุฉ. ุจุนุฏ ุฃุณุจูˆุนูŠู† ู…ู† ุงุณุชุฎุฏุงู… ุฌูˆู„ูŠุง ุŒ ู„ู… ูŠุนุฏ ูŠูุทุฑุญ ุณุคุงู„ ุงู„ุชุจุฏูŠู„ ุจูŠู† ุงู„ู†ู…ุงุฐุฌ ุงู„ู„ุบูˆูŠุฉ.


ุงู„ู†ู‚ุทุฉ ุงู„ุซุงู†ูŠุฉ ุงู„ู…ู‡ู…ุฉ ููŠ ู‡ุฐู‡ ุงู„ู„ุบุฉ ู‡ูŠ ุงู„ุชู…ุซูŠู„ ุงู„ุฏุงุฎู„ูŠ ู„ู„ู…ุตููˆูุงุช. ุจุงู„ู†ุณุจุฉ ุฅู„ู‰ ุฌูˆู„ูŠุง ุŒ ูุฅู† ุงู„ุตููŠู ุงู„ุฎุทูŠ ู‡ูˆ ุนู…ูˆุฏ. ููŠ ู†ูุณ ุงู„ูˆู‚ุช ุŒ ุจุงู„ู†ุณุจุฉ ู„ู„ุบุงุช ู…ุซู„ C ุŒ Java ุŒ ูุฅู† ุงู„ุตููŠู ุฃุญุงุฏูŠ ุงู„ุจุนุฏ ู‡ูˆ ุณู„ุณู„ุฉ.


ู†ูˆุถุญ ุฐู„ูƒ ุจู…ุตููˆูุฉ ุชู… ุฅู†ุดุงุคู‡ุง ููŠ ุณุทุฑ ุงู„ุฃูˆุงู…ุฑ (REPL)


julia> a = [1, 2, 3] 3-element Array{Int64,1}: 1 2 3 

ุงู†ุชุจู‡ ุฅู„ู‰ ู†ูˆุน ุงู„ุตููŠู - Array {Int64ุŒ1}. ุงู„ุตููŠู ุฃุญุงุฏูŠ ุงู„ุจุนุฏ ุŒ ุงูƒุชุจ Int64. ุนู„ุงูˆุฉ ุนู„ู‰ ุฐู„ูƒ ุŒ ุฅุฐุง ุฃุฑุฏู†ุง ุฏู…ุฌ ู‡ุฐุง ุงู„ุตููŠู ู…ุน ุตููŠู ุขุฎุฑ ุŒ ูุนู†ุฏู…ุง ู†ุชุนุงู…ู„ ู…ุน ุนู…ูˆุฏ ุŒ ูŠุฌุจ ุฃู† ู†ุณุชุฎุฏู… ูˆุธูŠูุฉ vcat (ุฃูŠ ุณู„ุณู„ุฉ ู…ุชุณู„ุณู„ุฉ ุฑุฃุณูŠุฉ). ูˆุงู„ู†ุชูŠุฌุฉ ุนู…ูˆุฏ ุฌุฏูŠุฏ.


 julia> b = vcat(a, [5, 6, 7]) 7-element Array{Int64,1}: 1 2 3 5 6 7 

ุฅุฐุง ุฃู†ุดุฃู†ุง ุตููŠูู‹ุง ูƒุณู„ุณู„ุฉ ุŒ ูุนู†ุฏ ูƒุชุงุจุฉ ุญุฑู ุญุฑููŠ ุŒ ู†ุณุชุฎุฏู… ุงู„ู…ุณุงูุงุช ุจุฏู„ุงู‹ ู…ู† ุงู„ููˆุงุตู„ ูˆู†ุญุตู„ ุนู„ู‰ ุตููŠู ุซู†ุงุฆูŠ ุงู„ุฃุจุนุงุฏ ู…ู† ุงู„ู†ูˆุน Array {Int64ุŒ2}. ุงู„ูˆุณูŠุทุฉ ุงู„ุซุงู†ูŠุฉ ููŠ ุฅุนู„ุงู† ุงู„ู†ูˆุน ุชุนู†ูŠ ุนุฏุฏ ุฅุญุฏุงุซูŠุงุช ุงู„ุตููŠู ู…ุชุนุฏุฏ ุงู„ุฃุจุนุงุฏ.


 julia> c = [1 2 3] 1ร—3 Array{Int64,2}: 1 2 3 

ุฃูŠ ุŒ ุญุตู„ู†ุง ุนู„ู‰ ู…ุตููˆูุฉ ู…ู† ุตู ูˆุงุญุฏ ูˆุซู„ุงุซุฉ ุฃุนู…ุฏุฉ.


ู‡ุฐุง ุงู„ุนุฑุถ ู„ู„ุตููˆู ูˆุงู„ุฃุนู…ุฏุฉ ู‡ูˆ ุฃูŠุถู‹ุง ุณู…ุฉ ู…ู…ูŠุฒุฉ ู„ู€ Fortran ูˆ Matlab ุŒ ูˆู„ูƒู† ูŠุฌุจ ุฃู† ู†ุชุฐูƒุฑ ูู‚ุท ุฃู† ุฌูˆู„ูŠุง ู‡ูŠ ู„ุบุฉ ู…ูˆุฌู‡ุฉ ุจุดูƒู„ ุฎุงุต ุฅู„ู‰ ู…ุฌุงู„ ุชุทุจูŠู‚ู‡ุง.


ู…ุตููˆูุฉ ุฌูˆู„ูŠุง ุนุจุงุฑุฉ ุนู† ุตููŠู ุซู†ุงุฆูŠ ุงู„ุฃุจุนุงุฏ ุŒ ุญูŠุซ ุชูƒูˆู† ุฌู…ูŠุน ุงู„ุฎู„ุงูŠุง ู…ู† ู†ูุณ ุงู„ู†ูˆุน. ุฏุนู†ุง ู†ู†ุชุจู‡ ุฅู„ู‰ ุญู‚ูŠู‚ุฉ ุฃู† ุงู„ู†ูˆุน ูŠู…ูƒู† ุฃู† ูŠูƒูˆู† ู…ุฌุฑู‘ุฏู‹ุง ุฃูŠ ุฃูˆ ู…ุญุฏุฏู‹ุง ุชู…ุงู…ู‹ุง ุŒ ู…ุซู„ Int64 ุฃูˆ Float64 ุฃูˆ ุญุชู‰ String.


ูŠู…ูƒู†ู†ุง ุฅู†ุดุงุก ู…ุตููˆูุฉ ููŠ ุดูƒู„ ุญุฑููŠ:


 julia> a = [1 2; 3 4] 2ร—2 Array{Int64,2}: 1 2 3 4 

ุฅู†ุดุงุก ุจุงุณุชุฎุฏุงู… ุงู„ู…ู†ุดุฆ ูˆุชุฎุตูŠุต ุงู„ุฐุงูƒุฑุฉ ุฏูˆู† ุงู„ุชู‡ูŠุฆุฉ (undef):


 julia> a = Array{Int64,2}(undef, 2, 3) 2ร—3 Array{Int64,2}: 4783881648 4783881712 4782818640 4783881680 4783881744 4782818576 

ุฃูˆ ู…ุน ุงู„ุชู‡ูŠุฆุฉ ุฅุฐุง ุชู… ุชุญุฏูŠุฏ ุฃูŠ ู‚ูŠู…ุฉ ู…ุญุฏุฏุฉ ุจุฏู„ุงู‹ ู…ู† undef.


ุงู„ุบุฑุงุก ู…ู† ุฃุนู…ุฏุฉ ู…ู†ูุตู„ุฉ:


 julia> a = [1, 2, 3] 3-element Array{Int64,1}: 1 2 3 julia> b = hcat(a, a, a, a) 3ร—4 Array{Int64,2}: 1 1 1 1 2 2 2 2 3 3 3 3 

ุงู„ุชู‡ูŠุฆุฉ ุจุดูƒู„ ุนุดูˆุงุฆูŠ:


 julia> x = rand(1:10, 2, 3) 2ร—3 Array{Int64,2}: 1 10 2 9 7 7 

ูˆุณูŠุทุงุช ุฑุงู†ุฏ - ุชุชุฑุงูˆุญ ู…ู† 1 ุฅู„ู‰ 10 ูˆุงู„ุฃุจุนุงุฏ 2 ร— 3.


ุฃูˆ ุงุณุชุฎุฏู… ุงู„ุดู…ูˆู„ (ุงู„ูู‡ู…)


 julia> x = [min(i, j) for i = 0:2, j = 0:2 ] 3ร—3 Array{Int64,2}: 0 0 0 0 1 1 0 1 2 

ู„ุงุญุธ ุฃู† ุญู‚ูŠู‚ุฉ ุฃู† ุฃุนู…ุฏุฉ ุฌูˆู„ูŠุง ุนุจุงุฑุฉ ุนู† ูƒุชู„ุฉ ุฎุทูŠุฉ ู…ู† ุงู„ุฐุงูƒุฑุฉ ุชุคุฏูŠ ุฅู„ู‰ ุญู‚ูŠู‚ุฉ ุฃู† ุงู„ุชูƒุฑุงุฑ ููˆู‚ ุงู„ุนู†ุงุตุฑ ุญุณุจ ุงู„ุนู…ูˆุฏ ุณูŠูƒูˆู† ุฃุณุฑุน ุจูƒุซูŠุฑ ู…ู† ุงู„ูุฑุฒ ุนุจุฑ ุงู„ุตููˆู. ุนู„ู‰ ูˆุฌู‡ ุงู„ุฎุตูˆุต ุŒ ูŠุณุชุฎุฏู… ุงู„ู…ุซุงู„ ุงู„ุชุงู„ูŠ ู…ุตููˆูุฉ ู…ู† 1_000_000 ุตู ูˆ 100 ุนู…ูˆุฏ.


 #!/usr/bin/env julia using BenchmarkTools x = rand(1:1000, 1_000_000, 100) #x = rand(1_000_000, 100) function sumbycolumns(x) sum = 0 rows, cols = size(x) for j = 1:cols, i = 1:rows sum += x[i, j] end return sum end @show @btime sumbycolumns(x) function sumbyrows(x) sum = 0 rows, cols = size(x) for i = 1:rows, j = 1:cols sum += x[i, j] end return sum end @show @btime sumbyrows(x) 

ุงู„ู†ุชุงุฆุฌ:


  74.378 ms (1 allocation: 16 bytes) =# @btime(sumbycolumns(x)) = 50053093495 206.346 ms (1 allocation: 16 bytes) =# @btime(sumbyrows(x)) = 50053093495 

btime ููŠ ุงู„ู…ุซุงู„ ุนุจุงุฑุฉ ุนู† ุชุดุบูŠู„ ู…ุชุนุฏุฏ ู„ู„ุฏุงู„ุฉ ู„ุญุณุงุจ ู…ุชูˆุณุท โ€‹โ€‹ุงู„ูˆู‚ุช ุงู„ุฐูŠ ูŠุณุชุบุฑู‚ู‡ ุงู„ุชู†ููŠุฐ. ูŠุชู… ุชูˆููŠุฑ ู‡ุฐุง ุงู„ู…ุงูƒุฑูˆ ู…ู† ู‚ุจู„ ู…ูƒุชุจุฉ BenchmarkTools.jl. ุชุญุชูˆูŠ ู…ุฌู…ูˆุนุฉ ุฌูˆู„ูŠุง ุงู„ุฃุณุงุณูŠุฉ ุนู„ู‰ ู…ุงูƒุฑูˆ ุฒู…ู†ูŠ ุŒ ู„ูƒู†ู‡ุง ุชู‚ูŠุณ ูุงุตู„ ุฒู…ู†ูŠ ูˆุงุญุฏ ุŒ ููŠ ู‡ุฐู‡ ุงู„ุญุงู„ุฉ ุŒ ุณูŠูƒูˆู† ุบูŠุฑ ุฏู‚ูŠู‚. ูŠุนุฑุถ ุงู„ู…ุงูƒุฑูˆ show ุงู„ุชุนุจูŠุฑ ูˆู‚ูŠู…ุชู‡ ุงู„ู…ุญุณูˆุจุฉ ููŠ ูˆุญุฏุฉ ุงู„ุชุญูƒู….


ูŠุนุฏ ุชุญุณูŠู† ุชุฎุฒูŠู† ุงู„ุนู…ูˆุฏ ู…ู†ุงุณุจู‹ุง ู„ุฅุฌุฑุงุก ุงู„ุนู…ู„ูŠุงุช ุงู„ุฅุญุตุงุฆูŠุฉ ุจุงุณุชุฎุฏุงู… ุฌุฏูˆู„. ู†ุธุฑู‹ุง ู„ุฃู†ู‡ ุชู‚ู„ูŠุฏูŠู‹ุง ุŒ ูŠูƒูˆู† ุงู„ุฌุฏูˆู„ ู…ุญุฏูˆุฏู‹ุง ุจุนุฏุฏ ุงู„ุฃุนู…ุฏุฉ ุŒ ูˆูŠู…ูƒู† ุฃู† ูŠูƒูˆู† ุนุฏุฏ ุงู„ุตููˆู ุฃูŠู‹ุง ุŒ ูŠุชู… ุชู†ููŠุฐ ู…ุนุธู… ุงู„ุนู…ู„ูŠุงุช ุŒ ู…ุซู„ ุญุณุงุจ ุงู„ู…ุชูˆุณุท โ€‹โ€‹ุŒ ูˆุงู„ุญุฏ ุงู„ุฃุฏู†ู‰ ุŒ ูˆุงู„ู‚ูŠู… ุงู„ู‚ุตูˆู‰ ุŒ ุนู„ู‰ ูˆุฌู‡ ุงู„ุชุญุฏูŠุฏ ู„ุฃุนู…ุฏุฉ ุงู„ู…ุตููˆูุงุช ุŒ ูˆู„ูŠุณ ู„ุตููˆูู‡ุง.


ู…ุฑุงุฏู ู„ุตููŠู ุซู†ุงุฆูŠ ุงู„ุฃุจุนุงุฏ ู‡ูˆ ู†ูˆุน ุงู„ู…ุตููˆูุฉ. ูˆู…ุน ุฐู„ูƒ ุŒ ู‡ุฐุง ู‡ูˆ ุฃุณู„ูˆุจ ุงู„ุฑุงุญุฉ ุจุฏู„ุงู‹ ู…ู† ุงู„ุถุฑูˆุฑุฉ.


ูŠุชู… ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุนู†ุงุตุฑ ุงู„ู…ุตููˆูุฉ ุนู† ุทุฑูŠู‚ ุงู„ูู‡ุฑุณ. ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ ู„ู…ุตููˆูุฉ ุชู… ุฅู†ุดุงุคู‡ุง ู…ุณุจู‚ู‹ุง


 julia> x = rand(1:10, 2, 3) 2ร—3 Array{Int64,2}: 1 10 2 9 7 7 

ูŠู…ูƒู†ู†ุง ุงู„ุญุตูˆู„ ุนู„ู‰ ุนู†ุตุฑ ู…ุนูŠู† ู…ุซู„ x [1ุŒ 2] => 10. ู„ุฐุง ุงุญุตู„ ุนู„ู‰ ุงู„ุนู…ูˆุฏ ุจุฃูƒู…ู„ู‡ ุŒ ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ ุงู„ุนู…ูˆุฏ ุงู„ุซุงู†ูŠ:


 julia> x[:, 2] 2-element Array{Int64,1}: 10 7 

ุฃูˆ ุงู„ุณุทุฑ ุงู„ุซุงู†ูŠ:


 julia> x[2, :] 3-element Array{Int64,1}: 9 7 7 

ู‡ู†ุงูƒ ุฃูŠุถู‹ุง ูˆุธูŠูุฉ selectdim ู…ููŠุฏุฉ ุŒ ุญูŠุซ ูŠู…ูƒู†ูƒ ุชุญุฏูŠุฏ ุงู„ุนุฏุฏ ุงู„ุชุฑุชูŠุจูŠ ู„ู„ุจุนุฏ ุงู„ุฐูŠ ุชุฑูŠุฏ ุชุญุฏูŠุฏู‡ ุŒ ุจุงู„ุฅุถุงูุฉ ุฅู„ู‰ ู…ุคุดุฑุงุช ุนู†ุงุตุฑ ู‡ุฐุง ุงู„ุจุนุฏ. ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ ู‚ู… ุจุนู…ู„ ุนูŠู†ุงุช ููŠ ุงู„ุจุนุฏ ุงู„ุซุงู†ูŠ (ุงู„ุฃุนู…ุฏุฉ) ุนู† ุทุฑูŠู‚ ุชุญุฏูŠุฏ ุงู„ูู‡ุฑุณ ุงู„ุฃูˆู„ ูˆุงู„ุซุงู„ุซ. ูŠุนุฏ ู‡ุฐุง ุงู„ู†ู‡ุฌ ู…ู†ุงุณุจู‹ุง ุนู†ุฏู…ุง ุชุญุชุงุฌ ุŒ ูˆูู‚ู‹ุง ู„ู„ุธุฑูˆู ุŒ ุฅู„ู‰ ุงู„ุชุจุฏูŠู„ ุจูŠู† ุงู„ุตููˆู ูˆุงู„ุฃุนู…ุฏุฉ. ูˆู…ุน ุฐู„ูƒ ุŒ ู‡ุฐุง ุตุญูŠุญ ุจุงู„ู†ุณุจุฉ ู„ู„ุญุงู„ุฉ ู…ุชุนุฏุฏุฉ ุงู„ุฃุจุนุงุฏ ุŒ ุนู†ุฏู…ุง ูŠูƒูˆู† ุนุฏุฏ ุงู„ุฃุจุนุงุฏ ุฃูƒุซุฑ ู…ู† 2.


 julia> selectdim(x, 2, [1, 3]) 2ร—2 view(::Array{Int64,2}, :, [1, 3]) with eltype Int64: 1 2 9 7 

ูˆุธุงุฆู ู„ู„ู…ุนุงู„ุฌุฉ ุงู„ุฅุญุตุงุฆูŠุฉ ู„ู„ู…ุตููˆูุงุช
ุงู„ู…ุฒูŠุฏ ุนู† ุงู„ู…ุตููˆูุงุช ุฃุญุงุฏูŠุฉ ุงู„ุจุนุฏ
ุตูุงุฆู ู…ุชุนุฏุฏุฉ ุงู„ุฃุจุนุงุฏ
ูˆุธุงุฆู ุงู„ุฌุจุฑ ุงู„ุฎุทูŠ ูˆุงู„ู…ุตููˆูุงุช ุฐุงุช ุงู„ุดูƒู„ ุงู„ุฎุงุต


ูŠู…ูƒู† ู‚ุฑุงุกุฉ ุฌุฏูˆู„ ู…ู† ู…ู„ู ุจุงุณุชุฎุฏุงู… ูˆุธูŠูุฉ readdlm ุงู„ุชูŠ ุชู… ุชู†ููŠุฐู‡ุง ููŠ ู…ูƒุชุจุฉ DelimitedFiles. ุงู„ุชุณุฌูŠู„ - ุจุงุณุชุฎุฏุงู… writedlm. ุชูˆูุฑ ู‡ุฐู‡ ุงู„ูˆุธุงุฆู ุงู„ุนู…ู„ ู…ุน ุงู„ู…ู„ูุงุช ุฐุงุช ุงู„ู…ุญุฏุฏุงุช ุŒ ูˆุงู„ุญุงู„ุฉ ุงู„ุฎุงุตุฉ ู‡ูŠ ุชู†ุณูŠู‚ CSV.


ู†ูˆุถุญ ุจู…ุซุงู„ ู…ู† ุงู„ูˆุซุงุฆู‚:


 julia> using DelimitedFiles julia> x = [1; 2; 3; 4]; julia> y = ["a"; "b"; "c"; "d"]; julia> open("delim_file.txt", "w") do io writedlm(io, [xy]) #      end; julia> readdlm("delim_file.txt") #   4ร—2 Array{Any,2}: 1 "a" 2 "b" 3 "c" 4 "d" 

ููŠ ู‡ุฐู‡ ุงู„ุญุงู„ุฉ ุŒ ูŠุฌุจ ุงู„ุงู†ุชุจุงู‡ ุฅู„ู‰ ุญู‚ูŠู‚ุฉ ุฃู† ุงู„ุฌุฏูˆู„ ูŠุญุชูˆูŠ ุนู„ู‰ ุจูŠุงู†ุงุช ู…ู† ุฃู†ูˆุงุน ู…ุฎุชู„ูุฉ. ู„ุฐู„ูƒ ุŒ ุนู†ุฏ ู‚ุฑุงุกุฉ ู…ู„ู ุŒ ูŠุชู… ุฅู†ุดุงุก ู…ุตููˆูุฉ ู…ู† ุงู„ู†ูˆุน Array {AnyุŒ 2}.
ู…ุซุงู„ ุขุฎุฑ ู‡ูˆ ู‚ุฑุงุกุฉ ุงู„ุฌุฏุงูˆู„ ุงู„ุชูŠ ุชุญุชูˆูŠ ุนู„ู‰ ุจูŠุงู†ุงุช ู…ุชุฌุงู†ุณุฉ.


 julia> using DelimitedFiles julia> x = [1; 2; 3; 4]; julia> y = [5; 6; 7; 8]; julia> open("delim_file.txt", "w") do io writedlm(io, [xy]) #   end; julia> readdlm("delim_file.txt", Int64) #    Int64 4ร—2 Array{Int64,2}: 1 5 2 6 3 7 4 8 julia> readdlm("delim_file.txt", Float64) #    Float64 4ร—2 Array{Float64,2}: 1.0 5.0 2.0 6.0 3.0 7.0 4.0 8.0 

ู…ู† ูˆุฌู‡ุฉ ู†ุธุฑ ูƒูุงุกุฉ ุงู„ู…ุนุงู„ุฌุฉ ุŒ ูŠูุถู„ ู‡ุฐุง ุงู„ุฎูŠุงุฑ ุŒ ุญูŠุซ ุณูŠุชู… ุชู‚ุฏูŠู… ุงู„ุจูŠุงู†ุงุช ุจุดูƒู„ ู…ุถุบูˆุท. ููŠ ุงู„ูˆู‚ุช ู†ูุณู‡ ุŒ ูŠุนุฏ ุชู‚ูŠูŠุฏู‹ุง ูˆุงุถุญู‹ุง ู„ู„ุฌุฏุงูˆู„ ุงู„ุชูŠ ุชู…ุซู„ู‡ุง ุงู„ู…ุตููˆูุฉ ุดุฑุทู‹ุง ู„ุชูˆุญูŠุฏ ุงู„ุจูŠุงู†ุงุช.


ู†ูˆุตูŠ ุจุงู„ุงุทู„ุงุน ุนู„ู‰ ู…ูŠุฒุงุช readdlm ุงู„ูƒุงู…ู„ุฉ ููŠ ุงู„ูˆุซุงุฆู‚. ู…ู† ุจูŠู† ุงู„ุฎูŠุงุฑุงุช ุงู„ุฅุถุงููŠุฉ ู‡ู†ุงูƒ ุงู„ู‚ุฏุฑุฉ ุนู„ู‰ ุชุญุฏูŠุฏ ูˆุถุน ุงู„ู…ุนุงู„ุฌุฉ ู„ู„ุฑุคูˆุณ ุŒ ูˆุฎุทูˆุท ุงู„ุชุฎุทูŠ ุŒ ูˆูˆุธูŠูุฉ ุฎู„ุงูŠุง ุงู„ู…ุนุงู„ุฌุฉ ุŒ ูˆู…ุง ุฅู„ู‰ ุฐู„ูƒ.


ุชุนุฏ ู…ูƒุชุจุฉ CSV.jl ุทุฑูŠู‚ุฉ ุจุฏูŠู„ุฉ ู„ู‚ุฑุงุกุฉ ุงู„ุฌุฏุงูˆู„. ู…ู‚ุงุฑู†ุฉู‹ ุจู‚ุฑุงุกุฉ readdlm ูˆ writedlm ุŒ ุชูˆูุฑ ู‡ุฐู‡ ุงู„ู…ูƒุชุจุฉ ุงู„ู…ุฒูŠุฏ ู…ู† ุงู„ุชุญูƒู… ุจุดูƒู„ ูƒุจูŠุฑ ููŠ ุฎูŠุงุฑุงุช ุงู„ูƒุชุงุจุฉ ูˆุงู„ู‚ุฑุงุกุฉ ุŒ ุจุงู„ุฅุถุงูุฉ ุฅู„ู‰ ูุญุต ุงู„ุจูŠุงู†ุงุช ููŠ ุงู„ู…ู„ูุงุช ุงู„ู…ุญุฏุฏุฉ. ูˆู…ุน ุฐู„ูƒ ุŒ ูุฅู† ุงู„ูุฑู‚ ุงู„ุฃุณุงุณูŠ ู‡ูˆ ุฃู†ู‡ ูŠู…ูƒู† ุชุฌุณูŠุฏ ู†ุชูŠุฌุฉ CSV.File ููŠ ู†ูˆุน DataFrame.


Dataframes


ุชูˆูุฑ ู…ูƒุชุจุฉ DataFrames ุฏุนู…ู‹ุง ู„ู‡ูŠูƒู„ ุจูŠุงู†ุงุช DataFrame ุŒ ูˆุงู„ุฐูŠ ูŠุฑูƒุฒ ุนู„ู‰ ุนุฑุถ ุงู„ุฌุฏุงูˆู„. ุงู„ูุฑู‚ ุงู„ุฃุณุงุณูŠ ู…ู† ุงู„ู…ุตููˆูุฉ ู‡ู†ุง ู‡ูˆ ุฃู† ูƒู„ ุนู…ูˆุฏ ูŠุชู… ุชุฎุฒูŠู†ู‡ ุจุดูƒู„ ูุฑุฏูŠ ุŒ ูˆูƒู„ ุนู…ูˆุฏ ู„ู‡ ุงุณู…ู‡ ุงู„ุฎุงุต. ู†ุฐูƒุฑ ุฃู†ู‡ ุจุงู„ู†ุณุจุฉ ู„ุฌูˆู„ูŠุง ุŒ ูŠุนุฏ ูˆุถุน ุงู„ุชุฎุฒูŠู† ุญุณุจ ุงู„ุนู…ูˆุฏ ุจุดูƒู„ ุนุงู… ุฃู…ุฑู‹ุง ุทุจูŠุนูŠู‹ุง. ูˆุนู„ู‰ ุงู„ุฑุบู… ู…ู† ุฃู† ู„ุฏูŠู†ุง ู‡ู†ุง ุญุงู„ุฉ ุฎุงุตุฉ ู…ู† ุงู„ู…ุตููˆูุงุช ุฃุญุงุฏูŠุฉ ุงู„ุจุนุฏ ุŒ ูŠุชู… ุงู„ุญุตูˆู„ ุนู„ู‰ ุญู„ ุฃู…ุซู„ ู…ู† ุญูŠุซ ุงู„ุณุฑุนุฉ ูˆุงู„ู…ุฑูˆู†ุฉ ู„ุชู…ุซูŠู„ ุงู„ุจูŠุงู†ุงุช ุŒ ุญูŠุซ ูŠู…ูƒู† ุฃู† ูŠูƒูˆู† ู†ูˆุน ูƒู„ ุนู…ูˆุฏ ูุฑุฏูŠู‹ุง.


ุฏุนูˆู†ุง ู†ุฑู‰ ูƒูŠููŠุฉ ุฅู†ุดุงุก DataFrame.


ูŠู…ูƒู† ุชุญูˆูŠู„ ุฃูŠ ู…ุตููˆูุฉ ุฅู„ู‰ DataFrame.


 julia> using DataFrames julia> a = [1 2; 3 4; 5 6] 3ร—2 Array{Int64,2}: 1 2 3 4 5 6 julia> b = convert(DataFrame, a) 3ร—2 DataFrame โ”‚ Row โ”‚ x1 โ”‚ x2 โ”‚ โ”‚ โ”‚ Int64 โ”‚ Int64 โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ 1 โ”‚ 1 โ”‚ 2 โ”‚ โ”‚ 2 โ”‚ 3 โ”‚ 4 โ”‚ โ”‚ 3 โ”‚ 5 โ”‚ 6 โ”‚ 

ุชู‚ูˆู… ูˆุธูŠูุฉ ุงู„ุชุญูˆูŠู„ ุจุชุญูˆูŠู„ ุงู„ุจูŠุงู†ุงุช ุฅู„ู‰ ุงู„ู†ูˆุน ุงู„ู…ุญุฏุฏ. ูˆูู‚ู‹ุง ู„ุฐู„ูƒ ุŒ ุจุงู„ู†ุณุจุฉ ู„ู†ูˆุน DataFrame ุŒ ูŠุชู… ุชุนุฑูŠู ุทุฑู‚ ูˆุธูŠูุฉ ุงู„ุชุญูˆูŠู„ ููŠ ู…ูƒุชุจุฉ DataFrames (ูˆูู‚ู‹ุง ู„ู…ุตุทู„ุญุงุช ุฌูˆู„ูŠุง ุŒ ู‡ู†ุงูƒ ูˆุธุงุฆู ุŒ ูˆูŠุทู„ู‚ ุนู„ู‰ ู…ุฌู…ูˆุนุฉ ู…ุชู†ูˆุนุฉ ู…ู† ุชุทุจูŠู‚ุงุชู‡ุง ู…ุน ูˆุณุงุฆุท ู…ุฎุชู„ูุฉ ุทุฑู‚). ูˆุชุฌุฏุฑ ุงู„ุฅุดุงุฑุฉ ุฅู„ู‰ ุฃู† ุฃุนู…ุฏุฉ ุงู„ู…ุตููˆูุฉ ูŠุชู… ุชุนูŠูŠู†ู‡ุง ุชู„ู‚ุงุฆูŠู‹ุง ู„ู„ุฃุณู…ุงุก x1 ูˆ x2. ุฃูŠ ุŒ ุฅุฐุง ุทู„ุจู†ุง ุงู„ุขู† ุฃุณู…ุงุก ุงู„ุฃุนู…ุฏุฉ ุŒ ูุณูˆู ู†ุญุตู„ ุนู„ูŠู‡ุง ููŠ ุดูƒู„ ุตููŠู:


 julia> names(b) 2-element Array{Symbol,1}: :x1 :x2 

ูˆุงู„ุฃุณู…ุงุก ู…ู‚ุฏู…ุฉ ุจุตูŠุบุฉ ู…ุซู„ ุงู„ุฑู…ุฒ (ุงู„ู…ุนุฑูˆู ููŠ ุนุงู„ู… ุฑูˆุจูŠ).


ูŠู…ูƒู† ุฅู†ุดุงุก DataFrame ู…ุจุงุดุฑุฉ - ูุงุฑุบุฉ ุฃูˆ ุชุญุชูˆูŠ ุนู„ู‰ ุจุนุถ ุงู„ุจูŠุงู†ุงุช ููŠ ูˆู‚ุช ุงู„ุจู†ุงุก. ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„:


 julia> df = DataFrame([collect(1:3), collect(4:6)], [:A, :B]) 3ร—2 DataFrame โ”‚ Row โ”‚ A โ”‚ B โ”‚ โ”‚ โ”‚ Int64 โ”‚ Int64 โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ 1 โ”‚ 1 โ”‚ 4 โ”‚ โ”‚ 2 โ”‚ 2 โ”‚ 5 โ”‚ โ”‚ 3 โ”‚ 3 โ”‚ 6 โ”‚ 

ู‡ู†ุง ู†ุดูŠุฑ ุฅู„ู‰ ู…ุตููˆูุฉ ุจู‚ูŠู… ุฃุนู…ุฏุฉ ูˆุตููŠู ุจุฃุณู…ุงุก ู‡ุฐู‡ ุงู„ุฃุนู…ุฏุฉ. ุชุฌู…ูŠุนุงุช ุงู„ู†ู…ูˆุฐุฌ (1: 3) ู‡ูŠ ุชุญูˆูŠู„ ู†ุทุงู‚ ู…ูƒุฑุฑ ู…ู† 1 ุฅู„ู‰ 3 ุฅู„ู‰ ุตููŠู ู…ู† ุงู„ู‚ูŠู….


ูŠู…ูƒู† ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ุฃุนู…ุฏุฉ ุญุณุจ ุงู„ุงุณู… ูˆุงู„ูู‡ุฑุณ.


ู…ู† ุงู„ุณู‡ู„ ุฌุฏู‹ุง ุฅุถุงูุฉ ุนู…ูˆุฏ ุฌุฏูŠุฏ ุจูƒุชุงุจุฉ ุจุนุถ ุงู„ู‚ูŠู…ุฉ ููŠ ุฌู…ูŠุน ุงู„ุตููˆู ุงู„ู…ูˆุฌูˆุฏุฉ. ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ df ุฃุนู„ุงู‡ ุŒ ู†ุฑูŠุฏ ุฅุถุงูุฉ ุนู…ูˆุฏ ุงู„ู†ุชูŠุฌุฉ. ู„ู„ู‚ูŠุงู… ุจุฐู„ูƒ ุŒ ู†ุญุชุงุฌ ุฅู„ู‰ ูƒุชุงุจุฉ:


 julia> df[:Score] = 0.0 0.0 julia> df 3ร—3 DataFrame โ”‚ Row โ”‚ A โ”‚ B โ”‚ Score โ”‚ โ”‚ โ”‚ Int64 โ”‚ Int64 โ”‚ Float64 โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ 1 โ”‚ 1 โ”‚ 4 โ”‚ 0.0 โ”‚ โ”‚ 2 โ”‚ 2 โ”‚ 5 โ”‚ 0.0 โ”‚ โ”‚ 3 โ”‚ 3 โ”‚ 6 โ”‚ 0.0 โ”‚ 

ูˆูƒุฐู„ูƒ ููŠ ุญุงู„ุฉ ุงู„ู…ุตููˆูุงุช ุงู„ุจุณูŠุทุฉ ุŒ ูŠู…ูƒู†ู†ุง ู„ุตู‚ ู…ุซูŠู„ุงุช DataFrame ุจุงุณุชุฎุฏุงู… ูˆุธุงุฆู vcat ุŒ hcat. ูˆู…ุน ุฐู„ูƒ ุŒ ู„ุง ูŠู…ูƒู† ุงุณุชุฎุฏุงู… vcat ุฅู„ุง ู…ุน ู†ูุณ ุงู„ุฃุนู…ุฏุฉ ููŠ ูƒู„ุง ุงู„ุฌุฏูˆู„ูŠู†. ูŠู…ูƒู†ูƒ ู…ุญุงุฐุงุฉ DataFrame ุŒ ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ ุจุงุณุชุฎุฏุงู… ุงู„ูˆุธูŠูุฉ ุงู„ุชุงู„ูŠุฉ:


 function merge_df(first::DataFrame, second::DataFrame)::DataFrame if (first == nothing) return second else names_first = names(first) names_second = names(second) sub_names = setdiff(names_first, names_second) second[sub_names] = 0 sub_names = setdiff(names_second, names_first) first[sub_names] = 0 vcat(second, first) end end 

ุชุญุตู„ ูˆุธูŠูุฉ ุงู„ุฃุณู…ุงุก ู‡ู†ุง ุนู„ู‰ ู…ุฌู…ูˆุนุฉ ู…ู† ุฃุณู…ุงุก ุงู„ุฃุนู…ุฏุฉ. ุชูƒุดู ุงู„ุฏุงู„ุฉ setdiff (s1ุŒ s2) ููŠ ุงู„ู…ุซุงู„ ุฌู…ูŠุน ุนู†ุงุตุฑ s1 ุงู„ุชูŠ ู„ูŠุณุช ููŠ s2. ุจุนุฏ ุฐู„ูƒ ุŒ ู‚ู… ุจุชูˆุณูŠุน DataFrame ู„ู‡ุฐู‡ ุงู„ุนู†ุงุตุฑ. vcat ู„ุตู‚ ุฅุทุงุฑูŠู† DataFrames ูˆุฅุฑุฌุงุน ุงู„ู†ุชูŠุฌุฉ. ุงุณุชุฎุฏุงู… ุงู„ุนูˆุฏุฉ ููŠ ู‡ุฐู‡ ุงู„ุญุงู„ุฉ ู„ูŠุณ ุถุฑูˆุฑูŠู‹ุง ุŒ ู„ุฃู† ู†ุชูŠุฌุฉ ุงู„ุนู…ู„ูŠุฉ ุงู„ุฃุฎูŠุฑุฉ ูˆุงุถุญุฉ.


ูŠู…ูƒู†ู†ุง ุงู„ุชุญู‚ู‚ ู…ู† ุงู„ู†ุชูŠุฌุฉ:


 julia> df1 = DataFrame(:A => collect(1:2)) 2ร—1 DataFrame โ”‚ Row โ”‚ A โ”‚ โ”‚ โ”‚ Int64 โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ 1 โ”‚ 1 โ”‚ โ”‚ 2 โ”‚ 2 โ”‚ julia> df2 = DataFrame(:B => collect(3:4)) 2ร—1 DataFrame โ”‚ Row โ”‚ B โ”‚ โ”‚ โ”‚ Int64 โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ 1 โ”‚ 3 โ”‚ โ”‚ 2 โ”‚ 4 โ”‚ julia> df3 = merge_df(df1, df2) 4ร—2 DataFrame โ”‚ Row โ”‚ B โ”‚ A โ”‚ โ”‚ โ”‚ Int64 โ”‚ Int64 โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ 1 โ”‚ 3 โ”‚ 0 โ”‚ โ”‚ 2 โ”‚ 4 โ”‚ 0 โ”‚ โ”‚ 3 โ”‚ 0 โ”‚ 1 โ”‚ โ”‚ 4 โ”‚ 0 โ”‚ 2 โ”‚ 

ู„ุงุญุธ ุฃู†ู‡ ู…ู† ุญูŠุซ ุงุตุทู„ุงุญุงุช ุงู„ุชุณู…ูŠุฉ ููŠ ุฌูˆู„ูŠุง ุŒ ู„ูŠุณ ู…ู† ุงู„ู…ุนุชุงุฏ ุงุณุชุฎุฏุงู… ุงู„ุดุฑุทุงุช ุงู„ุณูู„ูŠุฉ ุŒ ูˆู„ูƒู† ุจุนุฏ ุฐู„ูƒ ุชุนุงู†ูŠ ุณู‡ูˆู„ุฉ ุงู„ู‚ุฑุงุกุฉ. ูƒู…ุง ุฃู†ู‡ ู„ูŠุณ ุฌูŠุฏู‹ุง ุฌุฏู‹ุง ููŠ ู‡ุฐุง ุงู„ุชุทุจูŠู‚ ู‡ูˆ ุชุนุฏูŠู„ DataFrame ุงู„ุฃุตู„ูŠ. ูˆู„ูƒู† ุŒ ู…ุน ุฐู„ูƒ ุŒ ู‡ุฐุง ุงู„ู…ุซุงู„ ุฌูŠุฏ ู„ุชูˆุถูŠุญ ุนู…ู„ูŠุฉ ู…ุญุงุฐุงุฉ ุฃุนู…ุฏุฉ ู…ุชุนุฏุฏุฉ.


ูŠู…ูƒู† ุฑุจุท ุงู„ุนุฏูŠุฏ ู…ู† ุฅุทุงุฑุงุช ุงู„ุจูŠุงู†ุงุช ุจุงุณุชุฎุฏุงู… ุงู„ู‚ูŠู… ุงู„ู…ุดุชุฑูƒุฉ ููŠ ุงู„ุฃุนู…ุฏุฉ ุจุงุณุชุฎุฏุงู… ูˆุธูŠูุฉ ุงู„ุฑุจุท (ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ ู„ุตู‚ ุฌุฏูˆู„ูŠู† ุจุฃุนู…ุฏุฉ ู…ุฎุชู„ูุฉ ุจูˆุงุณุทุฉ ู…ุนุฑูุงุช ุงู„ู…ุณุชุฎุฏู…ูŠู† ุงู„ุนุงุฏูŠูŠู†).


DataFrame ู…ู†ุงุณุจ ู„ู„ุนุฑุถ ููŠ ูˆุญุฏุฉ ุงู„ุชุญูƒู…. ุฃูŠ ุทุฑูŠู‚ุฉ ู„ู„ุฅุฎุฑุงุฌ: ุงุณุชุฎุฏุงู… ุงู„ู…ุงูƒุฑูˆ show ุŒ ุจุงุณุชุฎุฏุงู… ูˆุธูŠูุฉ println ุŒ ูˆู…ุง ุฅู„ู‰ ุฐู„ูƒ ุŒ ุณูŠุคุฏูŠ ุฅู„ู‰ ุทุจุงุนุฉ ุฌุฏูˆู„ ุฅู„ู‰ ูˆุญุฏุฉ ุงู„ุชุญูƒู… ููŠ ู†ู…ูˆุฐุฌ ูŠุณู‡ู„ ู‚ุฑุงุกุชู‡. ุฅุฐุง ูƒุงู† DataFrame ูƒุจูŠุฑู‹ุง ุฌุฏู‹ุง ุŒ ูุณูŠุชู… ุนุฑุถ ุณุทุฑูŠ ุงู„ุจุฏุงูŠุฉ ูˆุงู„ู†ู‡ุงูŠุฉ. ูˆู…ุน ุฐู„ูƒ ุŒ ูŠู…ูƒู†ูƒ ุฃู† ุชุทู„ุจ ุตุฑุงุญุฉ ุงู„ุฑุฃุณ ูˆุงู„ุฐูŠู„ ู…ุน ูˆุธุงุฆู ุงู„ุฑุฃุณ ูˆุงู„ุฐูŠู„ ุŒ ุนู„ู‰ ุงู„ุชูˆุงู„ูŠ.


ุจุงู„ู†ุณุจุฉ ู„ู€ DataFrame ุŒ ุชุชูˆูุฑ ูˆุธุงุฆู ุชุฌู…ูŠุน ุงู„ุจูŠุงู†ุงุช ูˆุชุฌู…ูŠุนู‡ุง ู„ู„ุฏุงู„ุฉ ุงู„ู…ุญุฏุฏุฉ. ู‡ู†ุงูƒ ุงุฎุชู„ุงูุงุช ููŠ ู…ุง ูŠุนูˆุฏูˆู†. ูŠู…ูƒู† ุฃู† ุชูƒูˆู† ู‡ุฐู‡ ู…ุฌู…ูˆุนุฉ ู…ุน DataFrame ูŠููŠ ุจู…ุนุงูŠูŠุฑ ุงู„ุชุฌู…ูŠุน ุŒ ุฃูˆ DataFrame ูˆุงุญุฏ ุญูŠุซ ุณูŠุชู… ุชุดูƒูŠู„ ุฃุณู…ุงุก ุงู„ุฃุนู…ุฏุฉ ู…ู† ุงู„ุงุณู… ุงู„ุฃุตู„ูŠ ูˆุงุณู… ูˆุธูŠูุฉ ุงู„ุชุฌู…ูŠุน. ููŠ ุงู„ุฌูˆู‡ุฑ ุŒ ูŠุชู… ุชู†ููŠุฐ ู…ุฎุทุท ุชู‚ุณูŠู… ุงู„ุชู‚ุณูŠู…. ุงู†ุธุฑ ุงู„ุชูุงุตูŠู„


ุณู†ุณุชุฎุฏู… ู…ุซุงู„ ู…ู† ุงู„ูˆุซุงุฆู‚ ู…ุน ุฌุฏูˆู„ ู…ุซุงู„ ู…ุชุงุญ ูƒุฌุฒุก ู…ู† ุญุฒู…ุฉ DataFrames.


 julia> using DataFrames, CSV, Statistics julia> iris = CSV.read(joinpath(dirname(pathof(DataFrames)), "../test/data/iris.csv")); 

ุชู†ููŠุฐ ุงู„ุชุฌู…ูŠุน ุจุงุณุชุฎุฏุงู… ูˆุธูŠูุฉ groupby. ุญุฏุฏ ุงุณู… ุนู…ูˆุฏ ุงู„ุชุฌู…ูŠุน ูˆุงุญุตู„ ุนู„ู‰ ู†ุชูŠุฌุฉ ู…ู† ู†ูˆุน GroupedDataFrame ุŒ ูˆุงู„ุฐูŠ ูŠุญุชูˆูŠ ุนู„ู‰ ู…ุฌู…ูˆุนุฉ ู…ู† DataFrames ูุฑุฏูŠุฉ ุชู… ุฌู…ุนู‡ุง ู…ู† ุฎู„ุงู„ ู‚ูŠู… ุนู…ูˆุฏ ุงู„ุชุฌู…ูŠุน.


 julia> species = groupby(iris, :Species) GroupedDataFrame with 3 groups based on key: :Species First Group: 50 rows โ”‚ Row โ”‚ SepalLength โ”‚ SepalWidth โ”‚ PetalLength โ”‚ PetalWidth โ”‚ Species โ”‚ โ”‚ โ”‚ Float64 โ”‚ Float64 โ”‚ Float64 โ”‚ Float64 โ”‚ String โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ 1 โ”‚ 5.1 โ”‚ 3.5 โ”‚ 1.4 โ”‚ 0.2 โ”‚ setosa โ”‚ โ”‚ 2 โ”‚ 4.9 โ”‚ 3.0 โ”‚ 1.4 โ”‚ 0.2 โ”‚ setosa โ”‚ โ”‚ 3 โ”‚ 4.7 โ”‚ 3.2 โ”‚ 1.3 โ”‚ 0.2 โ”‚ setosa โ”‚ 

ูŠู…ูƒู† ุชุญูˆูŠู„ ุงู„ู†ุชูŠุฌุฉ ุฅู„ู‰ ุตููŠู ุจุงุณุชุฎุฏุงู… ูˆุธูŠูุฉ ุงู„ุชุฌู…ูŠุน ุงู„ู…ุฐูƒูˆุฑุฉ ู…ุณุจู‚ู‹ุง:


 julia> collect(species) 3-element Array{Any,1}: 50ร—5 SubDataFrame{Array{Int64,1}} โ”‚ Row โ”‚ SepalLength โ”‚ SepalWidth โ”‚ PetalLength โ”‚ PetalWidth โ”‚ Species โ”‚ โ”‚ โ”‚ Float64 โ”‚ Float64 โ”‚ Float64 โ”‚ Float64 โ”‚ String โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ 1 โ”‚ 5.1 โ”‚ 3.5 โ”‚ 1.4 โ”‚ 0.2 โ”‚ setosa โ”‚ โ”‚ 2 โ”‚ 4.9 โ”‚ 3.0 โ”‚ 1.4 โ”‚ 0.2 โ”‚ setosa โ”‚ โ”‚ 3 โ”‚ 4.7 โ”‚ 3.2 โ”‚ 1.3 โ”‚ 0.2 โ”‚ setosa โ”‚ โ€ฆ 

ุชุฌู…ูŠุน ุจุงุณุชุฎุฏุงู… ุงู„ูˆุธูŠูุฉ ุญุณุจ. ุญุฏุฏ ุงุณู… ุงู„ุนู…ูˆุฏ ูˆูˆุธูŠูุฉ ุงู„ู…ุนุงู„ุฌุฉ ู„ุฅุทุงุฑ DataFrame ุงู„ู…ุณุชู„ู…. ุงู„ู…ุฑุญู„ุฉ ุงู„ุฃูˆู„ู‰ ู…ู† ุงู„ุนู…ู„ ุชุดุจู‡ ูˆุธูŠูุฉ groupby - ู†ุญุตู„ ุนู„ู‰ ู…ุฌู…ูˆุนุฉ DataFrame. ู„ูƒู„ ุฅุทุงุฑ DataFrame ุŒ ุงุญุณุจ ุนุฏุฏ ุงู„ุตููˆู ูˆุถุนู‡ุง ููŠ ุงู„ุนู…ูˆุฏ N. ุณูŠุชู… ู„ุตู‚ ุงู„ู†ุชูŠุฌุฉ ููŠ ุฅุทุงุฑ DataFrame ูˆุงุญุฏ ูˆุณุชูุฑุฌุน ู†ุชูŠุฌุฉ ุงู„ูˆุธูŠูุฉ ุญุณุจ.


 julia> by(iris, :Species, df -> DataFrame(N = size(df, 1))) 3ร—2 DataFrame โ”‚ Row โ”‚ Species โ”‚ N โ”‚ โ”‚ โ”‚ Stringโฐ โ”‚ Int64 โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ 1 โ”‚ setosa โ”‚ 50 โ”‚ โ”‚ 2 โ”‚ versicolor โ”‚ 50 โ”‚ โ”‚ 3 โ”‚ virginica โ”‚ 50 โ”‚ 

ุญุณู†ู‹ุง ุŒ ุงู„ุฎูŠุงุฑ ุงู„ุฃุฎูŠุฑ ู‡ูˆ ุฏุงู„ุฉ ุงู„ุชุฌู…ูŠุน. ู†ุญุฏุฏ ุนู…ูˆุฏู‹ุง ู„ู„ุชุฌู…ูŠุน ูˆูˆุธูŠูุฉ ุชุฌู…ูŠุน ู„ู„ุฃุนู…ุฏุฉ ุงู„ู…ุชุจู‚ูŠุฉ. ูˆุงู„ู†ุชูŠุฌุฉ ู‡ูŠ DataFrame ุญูŠุซ ุณูŠุชู… ุชุดูƒูŠู„ ุฃุณู…ุงุก ุงู„ุฃุนู…ุฏุฉ ู†ูŠุงุจุฉ ุนู† ุฃุนู…ุฏุฉ ุงู„ู…ุตุฏุฑ ูˆุงุณู… ุฏุงู„ุฉ ุงู„ุชุฌู…ูŠุน.


 julia> aggregate(iris, :Species, sum) 3ร—5 DataFrame โ”‚Rowโ”‚Species โ”‚SepalLength_sumโ”‚SepalWidth_sumโ”‚PetalLength_sumโ”‚PetalWidth_sumโ”‚ โ”‚ โ”‚ String โ”‚ Float64 โ”‚ Float64 โ”‚ Float64 โ”‚ Float64 โ”‚ โ”œโ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ 1 โ”‚setosa โ”‚250.3 โ”‚ 171.4 โ”‚ 73.1 โ”‚ 12.3 โ”‚ โ”‚ 2 โ”‚versicolorโ”‚296.8 โ”‚ 138.5 โ”‚ 213.0 โ”‚ 66.3 โ”‚ โ”‚ 3 โ”‚virginica โ”‚329.4 โ”‚ 148.7 โ”‚ 277.6 โ”‚ 101.3 โ”‚ 

ุชุทุจู‚ ุงู„ุฏุงู„ุฉ colwise ุงู„ูˆุธูŠูุฉ ุงู„ู…ุญุฏุฏุฉ ุนู„ู‰ ุฌู…ูŠุน ุฃุนู…ุฏุฉ DataFrame ุงู„ู…ุญุฏุฏุฉ ุฃูˆ ูู‚ุท.


 julia> colwise(mean, iris[1:4]) 4-element Array{Float64,1}: 5.843333333333335 3.057333333333334 3.7580000000000027 1.199333333333334 

ูŠูˆุตู ูˆุธูŠูุฉ ู…ุฑูŠุญุฉ ู„ู„ุบุงูŠุฉ ู„ู„ุญุตูˆู„ ุนู„ู‰ ู…ู„ุฎุต ุงู„ุฌุฏูˆู„. ู…ุซุงู„ ู„ู„ุงุณุชุฎุฏุงู…:


 julia> describe(iris) 5ร—8 DataFrame โ”‚Rowโ”‚ variable โ”‚mean โ”‚min โ”‚medianโ”‚ max โ”‚nuniqueโ”‚nmissingโ”‚ eltype โ”‚ โ”‚ โ”‚ Symbol โ”‚Unionโ€ฆ โ”‚Any โ”‚Unionโ€ฆโ”‚ Any โ”‚Unionโ€ฆ โ”‚Int64 โ”‚DataTypeโ”‚ โ”œโ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ 1 โ”‚SepalLengthโ”‚5.84333โ”‚ 4.3 โ”‚ 5.8 โ”‚ 7.9 โ”‚ โ”‚ 0 โ”‚ Float64โ”‚ โ”‚ 2 โ”‚SepalWidth โ”‚3.05733โ”‚ 2.0 โ”‚ 3.0 โ”‚ 4.4 โ”‚ โ”‚ 0 โ”‚ Float64โ”‚ โ”‚ 3 โ”‚PetalLengthโ”‚3.758 โ”‚ 1.0 โ”‚ 4.35 โ”‚ 6.9 โ”‚ โ”‚ 0 โ”‚ Float64โ”‚ โ”‚ 4 โ”‚PetalWidth โ”‚1.19933โ”‚ 0.1 โ”‚ 1.3 โ”‚ 2.5 โ”‚ โ”‚ 0 โ”‚ Float64โ”‚ โ”‚ 5 โ”‚Species โ”‚ โ”‚setosaโ”‚ โ”‚virginicaโ”‚ 3 โ”‚ 0 โ”‚ String โ”‚ 

ู‚ุงุฆู…ุฉ ูƒุงู…ู„ุฉ ุจู…ูŠุฒุงุช DataFrames .


ูƒู…ุง ู‡ูˆ ุงู„ุญุงู„ ู…ุน ุญุงู„ุฉ Matrix ุŒ ูŠู…ูƒู†ูƒ ุงุณุชุฎุฏุงู… ุฌู…ูŠุน ุงู„ูˆุธุงุฆู ุงู„ุฅุญุตุงุฆูŠุฉ ุงู„ู…ุชุงุญุฉ ููŠ ูˆุญุฏุฉ ุงู„ุฅุญุตุงุฆูŠุงุช ููŠ DataFrame. ุงู†ุธุฑ https://docs.julialang.org/en/v1/stdlib/Statistics/index.html


ูŠุชู… ุงุณุชุฎุฏุงู… ู…ูƒุชุจุฉ StatPlots.jl ู„ุนุฑุถ DataFrame ุจุดูƒู„ ุฑุณูˆู…ูŠ. ุดุงู‡ุฏ ุงู„ู…ุฒูŠุฏ https://github.com/JuliaPlots/StatPlots.jl
ุชู‚ูˆู… ู‡ุฐู‡ ุงู„ู…ูƒุชุจุฉ ุจุชู†ููŠุฐ ู…ุฌู…ูˆุนุฉ ู…ู† ูˆุญุฏุงุช ุงู„ู…ุงูƒุฑูˆ ู„ุชุจุณูŠุท ุงู„ุชุตูˆุฑ.


 julia> df = DataFrame(a = 1:10, b = 10 .* rand(10), c = 10 .* rand(10)) 10ร—3 DataFrame โ”‚ Row โ”‚ a โ”‚ b โ”‚ c โ”‚ โ”‚ โ”‚ Int64 โ”‚ Float64 โ”‚ Float64 โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ 1 โ”‚ 1 โ”‚ 0.73614 โ”‚ 7.11238 โ”‚ โ”‚ 2 โ”‚ 2 โ”‚ 5.5223 โ”‚ 1.42414 โ”‚ โ”‚ 3 โ”‚ 3 โ”‚ 3.5004 โ”‚ 2.11633 โ”‚ โ”‚ 4 โ”‚ 4 โ”‚ 1.34176 โ”‚ 7.54208 โ”‚ โ”‚ 5 โ”‚ 5 โ”‚ 8.52392 โ”‚ 2.98558 โ”‚ โ”‚ 6 โ”‚ 6 โ”‚ 4.47477 โ”‚ 6.36836 โ”‚ โ”‚ 7 โ”‚ 7 โ”‚ 8.48093 โ”‚ 6.59236 โ”‚ โ”‚ 8 โ”‚ 8 โ”‚ 5.3761 โ”‚ 2.5127 โ”‚ โ”‚ 9 โ”‚ 9 โ”‚ 3.55393 โ”‚ 9.2782 โ”‚ โ”‚ 10 โ”‚ 10 โ”‚ 3.50925 โ”‚ 7.07576 โ”‚ julia> @df df plot(:a, [:b :c], colour = [:red :blue]) 


ููŠ ุงู„ุณุทุฑ ุงู„ุฃุฎูŠุฑ ุŒdf ู‡ูˆ ุงู„ู…ุงูƒุฑูˆ ุŒ df ู‡ูˆ ุงุณู… ุงู„ู…ุชุบูŠุฑ ู…ุน DataFrame.


ูŠู…ูƒู† ุฃู† ูŠูƒูˆู† Query.jl ู…ูƒุชุจุฉ ู…ููŠุฏุฉ ู„ู„ุบุงูŠุฉ. ุจุงุณุชุฎุฏุงู… ุขู„ูŠุงุช ูˆุญุฏุงุช ุงู„ู…ุงูƒุฑูˆ ูˆู‚ู†ุงุฉ ุงู„ู…ุนุงู„ุฌุฉ ุŒ ูŠูˆูุฑ Query.jl ู„ุบุฉ ุงุณุชุนู„ุงู… ู…ุชุฎุตุตุฉ. ู…ุซุงู„ ุนู„ู‰ ุฐู„ูƒ ู‡ูˆ ุงู„ุญุตูˆู„ ุนู„ู‰ ู‚ุงุฆู…ุฉ ุจุงู„ุฃุดุฎุงุต ุงู„ุฐูŠู† ุชุฒูŠุฏ ุฃุนู…ุงุฑู‡ู… ุนู† 50 ูˆุนุฏุฏ ุงู„ุฃุทูุงู„ ุงู„ุฐูŠู† ู„ุฏูŠู‡ู…:


 julia> using Query, DataFrames julia> df = DataFrame(name=["John", "Sally", "Kirk"], age=[23., 42., 59.], children=[3,5,2]) 3ร—3 DataFrame โ”‚ Row โ”‚ name โ”‚ age โ”‚ children โ”‚ โ”‚ โ”‚ String โ”‚ Float64 โ”‚ Int64 โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ 1 โ”‚ John โ”‚ 23.0 โ”‚ 3 โ”‚ โ”‚ 2 โ”‚ Sally โ”‚ 42.0 โ”‚ 5 โ”‚ โ”‚ 3 โ”‚ Kirk โ”‚ 59.0 โ”‚ 2 โ”‚ julia> x = @from i in df begin @where i.age>50 @select {i.name, i.children} @collect DataFrame end 1ร—2 DataFrame โ”‚ Row โ”‚ name โ”‚ children โ”‚ โ”‚ โ”‚ String โ”‚ Int64 โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ 1 โ”‚ Kirk โ”‚ 2 โ”‚ 

ุฃูˆ ู†ู…ูˆุฐุฌ ุจู‚ู†ุงุฉ:


 julia> using Query, DataFrames julia> df = DataFrame(name=["John", "Sally", "Kirk"], age=[23., 42., 59.], children=[3,5,2]); julia> x = df |> @query(i, begin @where i.age>50 @select {i.name, i.children} end) |> DataFrame 1ร—2 DataFrame โ”‚ Row โ”‚ name โ”‚ children โ”‚ โ”‚ โ”‚ String โ”‚ Int64 โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ 1 โ”‚ Kirk โ”‚ 2 โ”‚ 

ุดุงู‡ุฏ ุงู„ู…ุฒูŠุฏ ู…ู† ุงู„ุชูุงุตูŠู„


ูŠูˆุถุญ ูƒู„ุง ุงู„ู…ุซุงู„ูŠู† ุฃุนู„ุงู‡ ุงุณุชุฎุฏุงู… ู„ุบุงุช ุงู„ุงุณุชุนู„ุงู… ู…ุดุงุจู‡ุฉ ูˆุธูŠููŠุง ู„ู€ dplyr ุฃูˆ LINQ. ุนู„ุงูˆุฉ ุนู„ู‰ ุฐู„ูƒ ุŒ ู„ุง ุชู‚ุชุตุฑ ู‡ุฐู‡ ุงู„ู„ุบุงุช ุนู„ู‰ Query.jl. ุชุนุฑู ุนู„ู‰ ุงู„ู…ุฒูŠุฏ ุญูˆู„ ุงุณุชุฎุฏุงู… ู‡ุฐู‡ ุงู„ู„ุบุงุช ู…ุน DataFrames ู‡ู†ุง .


ูŠุณุชุฎุฏู… ุงู„ู…ุซุงู„ ุงู„ุฃุฎูŠุฑ ุนุงู…ู„ | |. ุดุงู‡ุฏ ุงู„ู…ุฒูŠุฏ .


ูŠุณุชุจุฏู„ ู‡ุฐุง ุงู„ุนุงู…ู„ ุงู„ุญุฌุฉ ููŠ ุงู„ุฏุงู„ุฉ ุงู„ู…ุดุงุฑ ุฅู„ูŠู‡ุง ุนู„ู‰ ูŠู…ูŠู†ู‡ุง. ุจุนุจุงุฑุฉ ุฃุฎุฑู‰:


 julia> [1:5;] |> x->x.^2 |> sum |> inv 0.01818181818181818 

ุชุนุงุฏู„:


 julia> inv(sum( [1:5;] .^ 2 )) 0.01818181818181818 

ูˆุขุฎุฑ ุดูŠุก ุฃูˆุฏ ุฃู† ุฃุดูŠุฑ ุฅู„ูŠู‡ ู‡ูˆ ุงู„ู‚ุฏุฑุฉ ุนู„ู‰ ูƒุชุงุจุฉ DataFrame ุฅู„ู‰ ุชู†ุณูŠู‚ ุงู„ุฅุฎุฑุงุฌ ุจุงุณุชุฎุฏุงู… ูุงุตู„ ุจุงุณุชุฎุฏุงู… ู…ูƒุชุจุฉ CSV.jl ุงู„ู…ุฐูƒูˆุฑุฉ ุณุงุจู‚ู‹ุง


 julia> df = DataFrame(name=["John", "Sally", "Kirk"], age=[23., 42., 59.], children=[3,5,2]) 3ร—3 DataFrame โ”‚ Row โ”‚ name โ”‚ age โ”‚ children โ”‚ โ”‚ โ”‚ String โ”‚ Float64 โ”‚ Int64 โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ 1 โ”‚ John โ”‚ 23.0 โ”‚ 3 โ”‚ โ”‚ 2 โ”‚ Sally โ”‚ 42.0 โ”‚ 5 โ”‚ โ”‚ 3 โ”‚ Kirk โ”‚ 59.0 โ”‚ 2 โ”‚ julia> CSV.write("out.csv", df) "out.csv" 

ูŠู…ูƒู†ู†ุง ุงู„ุชุญู‚ู‚ ู…ู† ุงู„ู†ุชูŠุฌุฉ ุงู„ู…ุณุฌู„ุฉ:


 > cat out.csv name,age,children John,23.0,3 Sally,42.0,5 Kirk,59.0,2 

ุงู„ุฎู„ุงุตุฉ


ู…ู† ุงู„ุตุนุจ ุงู„ุชู†ุจุค ุจู…ุง ุฅุฐุง ูƒุงู†ุช ุฌูˆู„ูŠุง ุณุชุตุจุญ ู„ุบุฉ ุจุฑู…ุฌุฉ ุดุงุฆุนุฉ ู…ุซู„ R ุŒ ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ ูˆู„ูƒู† ู‡ุฐุง ุงู„ุนุงู… ุฃุตุจุญุช ุจุงู„ูุนู„ ู„ุบุฉ ุงู„ุจุฑู…ุฌุฉ ุงู„ุฃุณุฑุน ู†ู…ูˆู‹ุง. ุฅุฐุง ูƒุงู† ุงู„ู‚ู„ูŠู„ ู…ู†ู‡ู… ูู‚ุท ูŠุนุฑููˆู† ุนู†ู‡ุง ููŠ ุงู„ุนุงู… ุงู„ู…ุงุถูŠ ุŒ ู‡ุฐุง ุงู„ุนุงู… ุŒ ุจุนุฏ ุฅุตุฏุงุฑ ุงู„ุฅุตุฏุงุฑ 1.0 ูˆุชุซุจูŠุช ูˆุธุงุฆู ุงู„ู…ูƒุชุจุฉ ุŒ ูู‚ุฏ ุจุฏุฃูˆุง ููŠ ุงู„ูƒุชุงุจุฉ ุนู†ู‡ุง ุŒ ูˆู…ู† ุงู„ู…ุคูƒุฏ ุชู‚ุฑูŠุจู‹ุง ููŠ ุงู„ุนุงู… ุงู„ู…ู‚ุจู„ ุฃู†ู‡ุง ุณุชุตุจุญ ู„ุบุฉ ุณูŠูƒูˆู† ู…ู† ุบูŠุฑ ุงู„ู„ุงุฆู‚ ุนุฏู… ู…ุนุฑูุชู‡ุง ููŠ ู…ุฌุงู„ ุนู„ูˆู… ุงู„ุจูŠุงู†ุงุช. ูˆุงู„ุดุฑูƒุงุช ุงู„ุชูŠ ู„ู… ุชุจุฏุฃ ููŠ ุงุณุชุฎุฏุงู… ุฌูˆู„ูŠุง ู„ุชุญู„ูŠู„ ุงู„ุจูŠุงู†ุงุช ุณุชูƒูˆู† ุฏูŠู†ุงุตูˆุฑุงุช ุตุฑูŠุญุฉ ุณูŠุชู… ุงุณุชุจุฏุงู„ู‡ุง ุจุฃุญูุงุฏ ุฃูƒุซุฑ ู…ุฑูˆู†ุฉ.


ุฌูˆู„ูŠุง ู‡ูŠ ู„ุบุฉ ุจุฑู…ุฌุฉ ุดุงุจุฉ. ููŠ ุงู„ูˆุงู‚ุน ุŒ ุจุนุฏ ุธู‡ูˆุฑ ุงู„ู…ุดุงุฑูŠุน ุงู„ุชุฌุฑูŠุจูŠุฉ ุŒ ุณูŠูƒูˆู† ู…ู† ุงู„ูˆุงุถุญ ู…ุฏู‰ ุฌุงู‡ุฒูŠุฉ ุงู„ุจู†ูŠุฉ ุงู„ุชุญุชูŠุฉ ู„ุฌูˆู„ูŠุง ู„ู„ุงุณุชุฎุฏุงู… ุงู„ุตู†ุงุนูŠ ุงู„ุญู‚ูŠู‚ูŠ. ู…ุทูˆุฑูˆ ุฌูˆู„ูŠุง ุทู…ูˆุญูˆู† ู„ู„ุบุงูŠุฉ ูˆุฌุงู‡ุฒูˆู† ุงู„ุขู†. ุนู„ู‰ ุฃูŠ ุญุงู„ ุŒ ูุฅู† ุจู†ูŠุฉ ุฌูˆู„ูŠุง ุงู„ุจุณูŠุทุฉ ูˆู„ูƒู† ุงู„ุตุงุฑู…ุฉ ุชุฌุนู„ู‡ุง ู„ุบุฉ ุจุฑู…ุฌุฉ ุฌุฐุงุจุฉ ู„ู„ุบุงูŠุฉ ู„ู„ุชุนู„ู… ููŠ ุงู„ูˆู‚ุช ุงู„ุญุงู„ูŠ. ูŠุณู…ุญ ู„ูƒ ุงู„ุฃุฏุงุก ุงู„ุนุงู„ูŠ ุจุชู†ููŠุฐ ุฎูˆุงุฑุฒู…ูŠุงุช ู…ู†ุงุณุจุฉ ู„ูŠุณ ูู‚ุท ู„ู„ุฃุบุฑุงุถ ุงู„ุชุนู„ูŠู…ูŠุฉ ุŒ ูˆู„ูƒู† ุฃูŠุถู‹ุง ู„ู„ุงุณุชุฎุฏุงู… ุงู„ุญู‚ูŠู‚ูŠ ููŠ ุชุญู„ูŠู„ ุงู„ุจูŠุงู†ุงุช. ุณู†ุจุฏุฃ ููŠ ู…ุญุงูˆู„ุฉ ุฌูˆู„ูŠุง ุจุงุณุชู…ุฑุงุฑ ููŠ ู…ุดุงุฑูŠุน ู…ุฎุชู„ูุฉ ุงู„ุขู†.

Source: https://habr.com/ru/post/ar429994/


All Articles