@take コマンド
最初から幾つの要素を取り出すかを指示する
julia> source = [1,2,3,4,5]
5-element Array{Int64,1}:
1
2
3
4
5
julia> q = source |> @take(3) |> collect
[1, 2, 3]
@drop コマンド
最初から幾つの要素を捨てるかを指示する。
julia> source = [1,2,3,4,5]
5-element Array{Int64,1}:
1
2
3
4
5
julia> q = source |> @drop(3) |> collect
[4, 5]
@unique コマンド
重複データを取り除く(ユニークなデータのみを残す)
julia> source = [1,1,2,2,3]
5-element Array{Int64,1}:
1
1
2
2
3
julia> q = source |> @unique() |> collect
[1, 2, 3]
@select コマンド
source |> @select(selectors...)
selector は名前,位置,述語関数で選択,排除を指定する,これらは順に適用される(順序が変更されることはない)。
julia> df = DataFrame(fruit=["Apple","Banana","Cherry"],amount=[2,6,1000],
price=[1.2,2.0,0.4],isyellow=[false,true,false])
3×4 DataFrame
Row │ fruit amount price isyellow
│ String Int64 Float64 Bool
─────┼───────────────────────────────────
1 │ Apple 2 1.2 false
2 │ Banana 6 2.0 true
3 │ Cherry 1000 0.4 false
julia> q1 = df |> @select(2:3, occursin("ui"), -:amount) |> DataFrame
3×2 DataFrame
Row │ price fruit
│ Float64 String
─────┼─────────────────
1 │ 1.2 Apple
2 │ 2.0 Banana
3 │ 0.4 Cherry
julia> df = DataFrame(fruit=["Apple","Banana","Cherry"],amount=[2,6,1000],
price=[1.2,2.0,0.4],isyellow=[false,true,false])
3×4 DataFrame
Row │ fruit amount price isyellow
│ String Int64 Float64 Bool
─────┼───────────────────────────────────
1 │ Apple 2 1.2 false
2 │ Banana 6 2.0 true
3 │ Cherry 1000 0.4 false
julia> q2 = df |> @select(!endswith("t"), 1) |> DataFrame
3×3 DataFrame
Row │ price isyellow fruit
│ Float64 Bool String
─────┼───────────────────────────
1 │ 1.2 false Apple
2 │ 2.0 true Banana
3 │ 0.4 false Cherry
@rename コマンド
source |> @rename(args...)
args は順に適用される
julia> df = DataFrame(fruit=["Apple","Banana","Cherry"],amount=[2,6,1000],
price=[1.2,2.0,0.4],isyellow=[false,true,false])
3×4 DataFrame
Row │ fruit amount price isyellow
│ String Int64 Float64 Bool
─────┼───────────────────────────────────
1 │ Apple 2 1.2 false
2 │ Banana 6 2.0 true
3 │ Cherry 1000 0.4 false
julia> q = df |> @rename(:fruit => :food, :price => :cost, :food => :name) |> DataFrame
3×4 DataFrame
Row │ name amount cost isyellow
│ String Int64 Float64 Bool
─────┼───────────────────────────────────
1 │ Apple 2 1.2 false
2 │ Banana 6 2.0 true
3 │ Cherry 1000 0.4 false
@mutate コマンド
julia> df = DataFrame(fruit=["Apple","Banana","Cherry"],amount=[2,6,1000],
price=[1.2,2.0,0.4],isyellow=[false,true,false])
3×4 DataFrame
Row │ fruit amount price isyellow
│ String Int64 Float64 Bool
─────┼───────────────────────────────────
1 │ Apple 2 1.2 false
2 │ Banana 6 2.0 true
3 │ Cherry 1000 0.4 false
julia> q = df |> @mutate(price = 2 * _.price + _.amount, isyellow = _.fruit == "Apple") |> DataFrame
3×4 DataFrame
Row │ fruit amount price isyellow
│ String Int64 Float64 Bool
─────┼───────────────────────────────────
1 │ Apple 2 4.4 true
2 │ Banana 6 10.0 false
3 │ Cherry 1000 1000.8 false
@dropna コマンド
source |> @dropna(columns...)
引数なしで @dropna() のように使用されるときは,全ての列が対象になる。
julia> df = DataFrame(a=[1,2,3], b=[4,missing,5])
3×2 DataFrame
Row │ a b
│ Int64 Int64?
─────┼────────────────
1 │ 1 4
2 │ 2 missing
3 │ 3 5
julia> q = df |> @dropna() |> DataFrame
2×2 DataFrame
Row │ a b
│ Int64 Int64
─────┼──────────────
1 │ 1 4
2 │ 3 5
julia> q = df |> @dropna(:b) |> DataFrame
2×2 DataFrame
Row │ a b
│ Int64 Int64
─────┼──────────────
1 │ 1 4
2 │ 3 5
julia> q = df |> @dropna(:b, :a) |> DataFrame
julia> println(q)
2×2 DataFrame
Row │ a b
│ Int64 Int64
─────┼──────────────
1 │ 1 4
2 │ 3 5
@dissallowna コマンド
source |> @dissallowna(columns...)
@dissallowna() のように引数なしで使われると全ての列を対象にする。
julia> df = DataFrame(a=[1,missing,3], b=[4,5,6])
3×2 DataFrame
Row │ a b
│ Int64? Int64
─────┼────────────────
1 │ 1 4
2 │ missing 5
3 │ 3 6
julia> q = df |> @filter(!isna(_.a)) |> @dissallowna() |> DataFrame
2×2 DataFrame
Row │ a b
│ Int64 Int64
─────┼──────────────
1 │ 1 4
2 │ 3 6
julia> df = DataFrame(a=[1,2,missing], b=[4,missing,5])
3×2 DataFrame
Row │ a b
│ Int64? Int64?
─────┼──────────────────
1 │ 1 4
2 │ 2 missing
3 │ missing 5
julia> q = df |> @filter(!isna(_.b)) |> @dissallowna(:b) |> DataFrame
2×2 DataFrame
Row │ a b
│ Int64? Int64
─────┼────────────────
1 │ 1 4
2 │ missing 5
@replacena コマンド
source |> @replacena(replacement_value)
julia> df = DataFrame(a=[1,missing,3], b=[4,5,6])
3×2 DataFrame
Row │ a b
│ Int64? Int64
─────┼────────────────
1 │ 1 4
2 │ missing 5
3 │ 3 6
julia> q = df |> @replacena(0) |> DataFrame
3×2 DataFrame
Row │ a b
│ Int64 Int64
─────┼──────────────
1 │ 1 4
2 │ 0 5
3 │ 3 6
julia> df = DataFrame(a=[1,2,missing], b=["One",missing,"Three"])
3×2 DataFrame
Row │ a b
│ Int64? String?
─────┼──────────────────
1 │ 1 One
2 │ 2 missing
3 │ missing Three
julia> q = df |> @replacena(:b=>"Unknown", :a=>0) |> DataFrame
3×2 DataFrame
Row │ a b
│ Int64 String
─────┼────────────────
1 │ 1 One
2 │ 2 Unknown
3 │ 0 Three