Multidimensional data manipulation library in Swift
DataSeries, DataFrame, DataPanel for 1D, 2D, 3D data sets
Missing data handling
Automatic and explicit data alignment
Memberwise arithmetic operations
Flexible reshaping of data sets
IO tools: read/write to csv, JSON encoding/decoding
Data series-specific functionality: rolling and expanding window functions, shifting, conditional operations
let df1 = DataFrame ( dictionaryLiteral:
( " 1 " , DataSeries ( repeating: 10.0, count: 10 ) ) ,
( " 2 " , DataSeries ( repeating: 20.0, count: 10 ) ) ,
( " 3 " , DataSeries ( repeating: 30.0, count: 10 ) ) ,
( " 4 " , DataSeries ( repeating: 40.0, count: 10 ) ) ,
( " 5 " , DataSeries ( repeating: 50.0, count: 10 ) )
)
1
2
3
4
5
10.0
20.0
30.0
40.0
50.0
10.0
20.0
30.0
40.0
50.0
10.0
20.0
30.0
40.0
50.0
10.0
20.0
30.0
40.0
50.0
10.0
20.0
30.0
40.0
50.0
10.0
20.0
30.0
40.0
50.0
10.0
20.0
30.0
40.0
50.0
10.0
20.0
30.0
40.0
50.0
10.0
20.0
30.0
40.0
50.0
10.0
20.0
30.0
40.0
50.0
Define const DataFrame with shape of existing:
let constDf = df1. mapTo ( constant: 10.0)
Substract DataFrames memberwise:
1
2
3
4
5
0.0
10.0
20.0
30.0
40.0
0.0
10.0
20.0
30.0
40.0
0.0
10.0
20.0
30.0
40.0
0.0
10.0
20.0
30.0
40.0
0.0
10.0
20.0
30.0
40.0
0.0
10.0
20.0
30.0
40.0
0.0
10.0
20.0
30.0
40.0
0.0
10.0
20.0
30.0
40.0
0.0
10.0
20.0
30.0
40.0
0.0
10.0
20.0
30.0
40.0
Divide DataFrames memberwise:
1
2
3
4
5
1.0
2.0
3.0
4.0
5.0
1.0
2.0
3.0
4.0
5.0
1.0
2.0
3.0
4.0
5.0
1.0
2.0
3.0
4.0
5.0
1.0
2.0
3.0
4.0
5.0
1.0
2.0
3.0
4.0
5.0
1.0
2.0
3.0
4.0
5.0
1.0
2.0
3.0
4.0
5.0
1.0
2.0
3.0
4.0
5.0
1.0
2.0
3.0
4.0
5.0
Calculate series-wise expanding sum:
let df4 = df3. expandingSum ( initial: 0 )
1
2
3
4
5
1.0
2.0
3.0
4.0
5.0
2.0
4.0
6.0
8.0
10.0
3.0
6.0
9.0
12.0
15.0
4.0
8.0
12.0
16.0
20.0
5.0
10.0
15.0
20.0
25.0
6.0
12.0
18.0
24.0
30.0
7.0
14.0
21.0
28.0
35.0
8.0
16.0
24.0
32.0
40.0
9.0
18.0
27.0
36.0
45.0
10.0
20.0
30.0
40.0
50.0
let df5 = df4. shiftedBy ( 5 )
1
2
3
4
5
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
1.0
2.0
3.0
4.0
5.0
2.0
4.0
6.0
8.0
10.0
3.0
6.0
9.0
12.0
15.0
4.0
8.0
12.0
16.0
20.0
5.0
10.0
15.0
20.0
25.0
Fill nils with backward filling:
let df6 = df5. fillNils ( method: . backward( initial: nil ) )
1
2
3
4
5
1.0
2.0
3.0
4.0
5.0
1.0
2.0
3.0
4.0
5.0
1.0
2.0
3.0
4.0
5.0
1.0
2.0
3.0
4.0
5.0
1.0
2.0
3.0
4.0
5.0
1.0
2.0
3.0
4.0
5.0
2.0
4.0
6.0
8.0
10.0
3.0
6.0
9.0
12.0
15.0
4.0
8.0
12.0
16.0
20.0
5.0
10.0
15.0
20.0
25.0
Sum across columns, and turn result DataSeries into DataFrame of the initial shape:
let series1 = df6. columnSum ( )
let df7 = df6. mapTo ( series: series1)
1
2
3
4
5
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
15.0
30.0
30.0
30.0
30.0
30.0
45.0
45.0
45.0
45.0
45.0
60.0
60.0
60.0
60.0
60.0
75.0
75.0
75.0
75.0
75.0
For more details check out the Docs:
Koalas is licensed under MIT license.