DataFrames

讀取csv 說明

先安裝 DataFrames http://juliastats.github.io/DataFrames.jl/stable/ 在julia終端機介面輸入下指令即可安裝

Pkg.add("DataFrames")

(如果顯示 INFO: Nothing to be done,代表已經安裝過) 完成DataFrames後,可以先試看看它的效果 DataFrame特點在於,會將資料儲存在記憶體後,再來進行計算 接著,可以試著建立CSV檔案,並且載入 載入時,如果只是純內容,則系統會自動配置欄位名稱 test.csv

1,2,3,a
2,3,4,b
1,3,3,a
3,4,2,b
5,2,4,a
2,1,1,b
5,2,3,a
6,4,3,c

載入結果

julia> check =  readtable("try.csv")
7×4 DataFrames.DataFrame
│ Row │ x1 │ x2 │ x3 │ a   │
├─────┼────┼────┼────┼─────┤
│ 1   │ 2  │ 3  │ 4  │ "b" │
│ 2   │ 1  │ 3  │ 3  │ "a" │
│ 3   │ 3  │ 4  │ 2  │ "b" │
│ 4   │ 5  │ 2  │ 4  │ "a" │
│ 5   │ 2  │ 1  │ 1  │ "b" │
│ 6   │ 5  │ 2  │ 3  │ "a" │
│ 7   │ 6  │ 4  │ 3  │ "c" │

如果需要自定義欄位,直接在第一欄輸入欄位名稱 try.csv

ID , Number1 , num2 , abc_name 
1,2,3,a
2,3,4,b
1,3,3,a
3,4,2,b
5,2,4,a
2,1,1,b
5,2,3,a
6,4,3,c

載入結果

julia> check =  readtable("try.csv")
8×4 DataFrames.DataFrame
│ Row │ ID │ Number1 │ num2 │ abc_name │
├─────┼────┼─────────┼──────┼──────────┤
│ 1   │ 1  │ 2       │ 3    │ "a"      │
│ 2   │ 2  │ 3       │ 4    │ "b"      │
│ 3   │ 1  │ 3       │ 3    │ "a"      │
│ 4   │ 3  │ 4       │ 2    │ "b"      │
│ 5   │ 5  │ 2       │ 4    │ "a"      │
│ 6   │ 2  │ 1       │ 1    │ "b"      │
│ 7   │ 5  │ 2       │ 3    │ "a"      │
│ 8   │ 6  │ 4       │ 3    │ "c"      │

載入DataFrames

第一次開始使用時,先載入 DataFrames

using DataFrames

讀取CSV

載入 test.csv,將資料存入記憶體

files = readtable("test.csv")

顯示及計算

一次讀取所有資料 (注意!資料量過大時,不要一次讀取所有檔案)

@show files

讀取第一欄所有資料,

@show iris[1]

對第二欄資料進行加總

sum(iris[2])

對第二欄資料進行平均

sum(iris[2])/lenth(iris[2])

groupby 群組 下方是原本的資料列

julia>  iris
7×4 DataFrames.DataFrame
│ Row │ x1 │ x2 │ x3 │ a   │
├─────┼────┼────┼────┼─────┤
│ 1   │ 2  │ 3  │ 4  │ "b" │
│ 2   │ 1  │ 3  │ 3  │ "a" │
│ 3   │ 3  │ 4  │ 2  │ "b" │
│ 4   │ 5  │ 2  │ 4  │ "a" │
│ 5   │ 2  │ 1  │ 1  │ "b" │
│ 6   │ 5  │ 2  │ 3  │ "a" │
│ 7   │ 6  │ 4  │ 3  │ "c" │

先進行 5 欄(欄位名稱為a) group_by

julia> iris_g = groupby(tring, [:a])
DataFrames.GroupedDataFrame  3 groups with keys: Symbol[:a]
First Group:
3×4 DataFrames.SubDataFrame{Array{Int64,1}}
│ Row │ x1 │ x2 │ x3 │ a   │
├─────┼────┼────┼────┼─────┤
│ 1   │ 1  │ 3  │ 3  │ "a" │
│ 2   │ 5  │ 2  │ 4  │ "a" │
│ 3   │ 5  │ 2  │ 3  │ "a" │
⋮
Last Group:
1×4 DataFrames.SubDataFrame{Array{Int64,1}}
│ Row │ x1 │ x2 │ x3 │ a   │
├─────┼────┼────┼────┼─────┤
│ 1   │ 6  │ 4  │ 3  │ "c" │

接下來可以用迴圈來針對三個group進行計算 例如,分別取得各group的第三欄位,並加總 定義ary為陣列

julia> ary = []

透過 append!將總和值加入陣列 append!(陣列,值) 也可以用 insert! insert!(陣列, 插入位置, 值)

julia> for row in iris_g
    println("-----------")
    println(row[3])
    println(sum(row[3]))
    ary = append!(ary,sum(row[3]))
end
//或者
julia> for row in iris_g
    println("-----------")
    println(row[3])
    println(sum(row[3]))
    ary = insert!(ary, length(ary)+1,sum(row[3]))
end

-----------
[3,4,3]
10
-----------
[4,2,1]
7
-----------
[3]
3

列印出陣列結果

julia> println(ary)

HTTPServe

https://github.com/JuliaWeb/HttpServer.jl 安裝

Pkg.add("HttpServer")

HttpServe.jl

using HttpServer

http = HttpHandler() do req::Request, res::Response
    Response( ismatch(r"^/hello/",req.resource) ? string("Hello ", split(req.resource,'/')[3], "!") : 404 )
end

server = Server( http )
run( server, 8000 )
# or
run(server, host=IPv4(127,0,0,1), port=8000)

note http://pkg.julialang.org/ https://juliabyexample.helpmanual.io/ https://github.com/adon988/Julia.jl/blob/master/API.md#javascript

//http://juliawebstack.org/