Manipulating columns of a DataFrame#

Renaming columns#

Let’s start with a DataFrame of Bools that has default column names.

using DataFrames
x = DataFrame(rand(Bool, 3, 4), :auto)
3×4 DataFrame
Rowx1x2x3x4
BoolBoolBoolBool
1falsetruetruefalse
2truetruetruetrue
3falsetruefalsetrue

With rename(), we create new DataFrame; here we rename the column :x1 to :A. (rename also accepts collections of Pairs.)

rename(x, :x1 => :A)
3×4 DataFrame
RowAx2x3x4
BoolBoolBoolBool
1falsetruetruefalse
2truetruetruetrue
3falsetruefalsetrue

With rename!() we do an in place transformation. This time we’ve applied a function to every column name (note that the function gets a column names as a string).

rename!(c -> c^2, x)
3×4 DataFrame
Rowx1x1x2x2x3x3x4x4
BoolBoolBoolBool
1falsetruetruefalse
2truetruetruetrue
3falsetruefalsetrue

We can also change the name of a particular column without knowing the original. Here we change the name of the third column, creating a new DataFrame.

rename(x, 3 => :third)
3×4 DataFrame
Rowx1x1x2x2thirdx4x4
BoolBoolBoolBool
1falsetruetruefalse
2truetruetruetrue
3falsetruefalsetrue

If we pass a vector of names to rename!, we can change the names of all variables.

rename!(x, [:a, :b, :c, :d])
3×4 DataFrame
Rowabcd
BoolBoolBoolBool
1falsetruetruefalse
2truetruetruetrue
3falsetruefalsetrue

In all the above examples you could have used strings instead of symbols, for example,

rename!(x, string.('a':'d'))
3×4 DataFrame
Rowabcd
BoolBoolBoolBool
1falsetruetruefalse
2truetruetruetrue
3falsetruefalsetrue

rename! allows for circular renaming of columns:

x
3×4 DataFrame
Rowabcd
BoolBoolBoolBool
1falsetruetruefalse
2truetruetruetrue
3falsetruefalsetrue
rename!(x, "a"=>"d", "d"=>"a")
3×4 DataFrame
Rowdbca
BoolBoolBoolBool
1falsetruetruefalse
2truetruetruetrue
3falsetruefalsetrue

We get an error when we try to provide duplicate names

try
    rename(x, fill(:a, 4))
catch e
    show(e)
end
ArgumentError("Duplicate variable names: :a. Pass makeunique=true to make them unique using a suffix automatically.")

unless we pass makeunique=true, which allows us to handle duplicates in passed names.

rename(x, fill(:a, 4), makeunique=true)
3×4 DataFrame
Rowaa_1a_2a_3
BoolBoolBoolBool
1falsetruetruefalse
2truetruetruetrue
3falsetruefalsetrue

Reordering columns#

We can reorder the names(x) vector as needed, creating a new DataFrame.

using Random
Random.seed!(1234)
x[:, shuffle(names(x))]
3×4 DataFrame
Rowcbad
BoolBoolBoolBool
1truetruefalsefalse
2truetruetruetrue
3falsetruetruefalse

Also select! can be used to achieve this in place (or select to perform a copy):

x
3×4 DataFrame
Rowdbca
BoolBoolBoolBool
1falsetruetruefalse
2truetruetruetrue
3falsetruefalsetrue
select!(x, 4:-1:1);
x
3×4 DataFrame
Rowacbd
BoolBoolBoolBool
1falsetruetruefalse
2truetruetruetrue
3truefalsetruefalse

Mrging/adding columns#

x = DataFrame([(i,j) for i in 1:3, j in 1:4], :auto)
3×4 DataFrame
Rowx1x2x3x4
Tuple…Tuple…Tuple…Tuple…
1(1, 1)(1, 2)(1, 3)(1, 4)
2(2, 1)(2, 2)(2, 3)(2, 4)
3(3, 1)(3, 2)(3, 3)(3, 4)

With hcat we can merge two DataFrames. Also [x y] syntax is supported but only when DataFrames have unique column names.

hcat(x, x, makeunique=true)
3×8 DataFrame
Rowx1x2x3x4x1_1x2_1x3_1x4_1
Tuple…Tuple…Tuple…Tuple…Tuple…Tuple…Tuple…Tuple…
1(1, 1)(1, 2)(1, 3)(1, 4)(1, 1)(1, 2)(1, 3)(1, 4)
2(2, 1)(2, 2)(2, 3)(2, 4)(2, 1)(2, 2)(2, 3)(2, 4)
3(3, 1)(3, 2)(3, 3)(3, 4)(3, 1)(3, 2)(3, 3)(3, 4)

You can append a vector to a data frame with the following syntax:

y = [x DataFrame(A=[1,2,3])]
3×5 DataFrame
Rowx1x2x3x4A
Tuple…Tuple…Tuple…Tuple…Int64
1(1, 1)(1, 2)(1, 3)(1, 4)1
2(2, 1)(2, 2)(2, 3)(2, 4)2
3(3, 1)(3, 2)(3, 3)(3, 4)3

Here we do the same but add column :A to the front.

y = [DataFrame(A=[1,2,3]) x]
3×5 DataFrame
RowAx1x2x3x4
Int64Tuple…Tuple…Tuple…Tuple…
11(1, 1)(1, 2)(1, 3)(1, 4)
22(2, 1)(2, 2)(2, 3)(2, 4)
33(3, 1)(3, 2)(3, 3)(3, 4)

A column can also be added in the middle. Here a brute-force method is used and a new DataFrame is created.

using BenchmarkTools
@btime [$x[!, 1:2] DataFrame(A=[1,2,3]) $x[!, 3:4]]
  5.016 μs (93 allocations: 5.78 KiB)
3×5 DataFrame
Rowx1x2Ax3x4
Tuple…Tuple…Int64Tuple…Tuple…
1(1, 1)(1, 2)1(1, 3)(1, 4)
2(2, 1)(2, 2)2(2, 3)(2, 4)
3(3, 1)(3, 2)3(3, 3)(3, 4)

We could also do this with a specialized in place method insertcols!. Let’s add :newcol to the DataFrame y.

insertcols!(y, 2, "newcol" => [1,2,3])
3×6 DataFrame
RowAnewcolx1x2x3x4
Int64Int64Tuple…Tuple…Tuple…Tuple…
111(1, 1)(1, 2)(1, 3)(1, 4)
222(2, 1)(2, 2)(2, 3)(2, 4)
333(3, 1)(3, 2)(3, 3)(3, 4)

If you want to insert the same column name several times makeunique=true is needed as usual.

insertcols!(y, 2, :newcol => [1,2,3], makeunique=true)
3×7 DataFrame
RowAnewcol_1newcolx1x2x3x4
Int64Int64Int64Tuple…Tuple…Tuple…Tuple…
1111(1, 1)(1, 2)(1, 3)(1, 4)
2222(2, 1)(2, 2)(2, 3)(2, 4)
3333(3, 1)(3, 2)(3, 3)(3, 4)

We can see how much faster it is to insert a column with insertcols! than with hcat using @btime (note that we use here a Pair notation as an example).

@btime insertcols!(copy($x), 3, :A => [1,2,3])
  1.306 μs (26 allocations: 1.55 KiB)
3×5 DataFrame
Rowx1x2Ax3x4
Tuple…Tuple…Int64Tuple…Tuple…
1(1, 1)(1, 2)1(1, 3)(1, 4)
2(2, 1)(2, 2)2(2, 3)(2, 4)
3(3, 1)(3, 2)3(3, 3)(3, 4)

Let’s use insertcols! to append a column in place (note that we dropped the index at which we insert the column)

insertcols!(x, :A => [1,2,3])
3×5 DataFrame
Rowx1x2x3x4A
Tuple…Tuple…Tuple…Tuple…Int64
1(1, 1)(1, 2)(1, 3)(1, 4)1
2(2, 1)(2, 2)(2, 3)(2, 4)2
3(3, 1)(3, 2)(3, 3)(3, 4)3

and to in place prepend a column.

insertcols!(x, 1, :B => [1,2,3])
3×6 DataFrame
RowBx1x2x3x4A
Int64Tuple…Tuple…Tuple…Tuple…Int64
11(1, 1)(1, 2)(1, 3)(1, 4)1
22(2, 1)(2, 2)(2, 3)(2, 4)2
33(3, 1)(3, 2)(3, 3)(3, 4)3

Note that insertcols! can be used to insert several columns to a data frame at once and that it performs broadcasting if needed:

df = DataFrame(a = [1, 2, 3])
3×1 DataFrame
Rowa
Int64
11
22
33
insertcols!(df, :b => "x", :c => 'a':'c', :d => Ref([1,2,3]))
3×4 DataFrame
Rowabcd
Int64StringCharArray…
11xa[1, 2, 3]
22xb[1, 2, 3]
33xc[1, 2, 3]

Interestingly we can emulate hcat mutating the data frame in-place using insertcols!:

df1 = DataFrame(a=[1,2])
2×1 DataFrame
Rowa
Int64
11
22
df2 = DataFrame(b=[2,3], c=[3,4])
2×2 DataFrame
Rowbc
Int64Int64
123
234
hcat(df1, df2)
2×3 DataFrame
Rowabc
Int64Int64Int64
1123
2234

df1 is not touched

df1
2×1 DataFrame
Rowa
Int64
11
22
insertcols!(df1, pairs(eachcol(df2))...)
2×3 DataFrame
Rowabc
Int64Int64Int64
1123
2234

now we have changed df1

df1
2×3 DataFrame
Rowabc
Int64Int64Int64
1123
2234

Subsetting/removing columns#

Let’s create a new DataFrame x and show a few ways to create DataFrames with a subset of x’s columns.

x = DataFrame([(i,j) for i in 1:3, j in 1:5], :auto)
3×5 DataFrame
Rowx1x2x3x4x5
Tuple…Tuple…Tuple…Tuple…Tuple…
1(1, 1)(1, 2)(1, 3)(1, 4)(1, 5)
2(2, 1)(2, 2)(2, 3)(2, 4)(2, 5)
3(3, 1)(3, 2)(3, 3)(3, 4)(3, 5)

First we could do this by index: You could use ! instead of : for non-copying operation

x[:, [1,2,4,5]]
3×4 DataFrame
Rowx1x2x4x5
Tuple…Tuple…Tuple…Tuple…
1(1, 1)(1, 2)(1, 4)(1, 5)
2(2, 1)(2, 2)(2, 4)(2, 5)
3(3, 1)(3, 2)(3, 4)(3, 5)

or by column name:

x[:, [:x1, :x4]]
3×2 DataFrame
Rowx1x4
Tuple…Tuple…
1(1, 1)(1, 4)
2(2, 1)(2, 4)
3(3, 1)(3, 4)

We can also choose to keep or exclude columns by Bool (we need a vector whose length is the number of columns in the original DataFrame).

x[:, [true, false, true, false, true]]
3×3 DataFrame
Rowx1x3x5
Tuple…Tuple…Tuple…
1(1, 1)(1, 3)(1, 5)
2(2, 1)(2, 3)(2, 5)
3(3, 1)(3, 3)(3, 5)

Here we create a single column DataFrame,

x[:, [:x1]]
3×1 DataFrame
Rowx1
Tuple…
1(1, 1)
2(2, 1)
3(3, 1)

and here we access the vector contained in column :x1.

x[!, :x1] ## use : instead of ! to copy
3-element Vector{Tuple{Int64, Int64}}:
 (1, 1)
 (2, 1)
 (3, 1)
x.x1 ## the same
3-element Vector{Tuple{Int64, Int64}}:
 (1, 1)
 (2, 1)
 (3, 1)

We could grab the same vector by column number

x[!, 1]
3-element Vector{Tuple{Int64, Int64}}:
 (1, 1)
 (2, 1)
 (3, 1)

Note that getting a single column returns it without copying while creating a new DataFrame performs a copy of the column

x[!, 1] === x[!, [1]]
false

you can also use Regex, All, Between and Not from InvertedIndies.jl for column selection:

x[!, r"[12]"]
3×2 DataFrame
Rowx1x2
Tuple…Tuple…
1(1, 1)(1, 2)
2(2, 1)(2, 2)
3(3, 1)(3, 2)
x[!, Not(1)]
3×4 DataFrame
Rowx2x3x4x5
Tuple…Tuple…Tuple…Tuple…
1(1, 2)(1, 3)(1, 4)(1, 5)
2(2, 2)(2, 3)(2, 4)(2, 5)
3(3, 2)(3, 3)(3, 4)(3, 5)
x[!, Between(:x2, :x4)]
3×3 DataFrame
Rowx2x3x4
Tuple…Tuple…Tuple…
1(1, 2)(1, 3)(1, 4)
2(2, 2)(2, 3)(2, 4)
3(3, 2)(3, 3)(3, 4)
x[!, Cols(:x1, Between(:x3, :x5))]
3×4 DataFrame
Rowx1x3x4x5
Tuple…Tuple…Tuple…Tuple…
1(1, 1)(1, 3)(1, 4)(1, 5)
2(2, 1)(2, 3)(2, 4)(2, 5)
3(3, 1)(3, 3)(3, 4)(3, 5)
select(x, :x1, Between(:x3, :x5), copycols=false) ## the same as above
3×4 DataFrame
Rowx1x3x4x5
Tuple…Tuple…Tuple…Tuple…
1(1, 1)(1, 3)(1, 4)(1, 5)
2(2, 1)(2, 3)(2, 4)(2, 5)
3(3, 1)(3, 3)(3, 4)(3, 5)

you can use select and select! functions to select a subset of columns from a data frame. select creates a new data frame and select! operates in place

df = copy(x)
3×5 DataFrame
Rowx1x2x3x4x5
Tuple…Tuple…Tuple…Tuple…Tuple…
1(1, 1)(1, 2)(1, 3)(1, 4)(1, 5)
2(2, 1)(2, 2)(2, 3)(2, 4)(2, 5)
3(3, 1)(3, 2)(3, 3)(3, 4)(3, 5)
df2 = select(df, [1, 2])
3×2 DataFrame
Rowx1x2
Tuple…Tuple…
1(1, 1)(1, 2)
2(2, 1)(2, 2)
3(3, 1)(3, 2)
select(df, Not([1, 2]))
3×3 DataFrame
Rowx3x4x5
Tuple…Tuple…Tuple…
1(1, 3)(1, 4)(1, 5)
2(2, 3)(2, 4)(2, 5)
3(3, 3)(3, 4)(3, 5)

by default select copies columns

df2[!, 1] === df[!, 1]
false

which can be avoided by giving copycols=false

df2 = select(df, [1, 2], copycols=false)
3×2 DataFrame
Rowx1x2
Tuple…Tuple…
1(1, 1)(1, 2)
2(2, 1)(2, 2)
3(3, 1)(3, 2)
df2[!, 1] === df[!, 1]
true

using select! will modify the source data frame

select!(df, [1,2])
3×2 DataFrame
Rowx1x2
Tuple…Tuple…
1(1, 1)(1, 2)
2(2, 1)(2, 2)
3(3, 1)(3, 2)
df == df2
true

Here we create a copy of x and delete the 3rd column from the copy with select! and Not

z = copy(x)
select!(z, Not(3))
3×4 DataFrame
Rowx1x2x4x5
Tuple…Tuple…Tuple…Tuple…
1(1, 1)(1, 2)(1, 4)(1, 5)
2(2, 1)(2, 2)(2, 4)(2, 5)
3(3, 1)(3, 2)(3, 4)(3, 5)

alternatively we can achieve the same by using the select function

select(x, Not(3))
3×4 DataFrame
Rowx1x2x4x5
Tuple…Tuple…Tuple…Tuple…
1(1, 1)(1, 2)(1, 4)(1, 5)
2(2, 1)(2, 2)(2, 4)(2, 5)
3(3, 1)(3, 2)(3, 4)(3, 5)

x stays unchanged

x
3×5 DataFrame
Rowx1x2x3x4x5
Tuple…Tuple…Tuple…Tuple…Tuple…
1(1, 1)(1, 2)(1, 3)(1, 4)(1, 5)
2(2, 1)(2, 2)(2, 3)(2, 4)(2, 5)
3(3, 1)(3, 2)(3, 3)(3, 4)(3, 5)

Views#

Note, that you can also create a view of a DataFrame when we want a subset of its columns:

@btime x[:, [1,3,5]]
  1.185 μs (25 allocations: 1.50 KiB)
3×3 DataFrame
Rowx1x3x5
Tuple…Tuple…Tuple…
1(1, 1)(1, 3)(1, 5)
2(2, 1)(2, 3)(2, 5)
3(3, 1)(3, 3)(3, 5)
@btime @view x[:, [1,3,5]]
  416.232 ns (5 allocations: 240 bytes)
3×3 SubDataFrame
Rowx1x3x5
Tuple…Tuple…Tuple…
1(1, 1)(1, 3)(1, 5)
2(2, 1)(2, 3)(2, 5)
3(3, 1)(3, 3)(3, 5)

(Right now creation of the view is slow, but in the coming releases of the DataFrames.jl package it will become significantly faster)

Modify column by name#

x = DataFrame([(i,j) for i in 1:3, j in 1:5], :auto)
3×5 DataFrame
Rowx1x2x3x4x5
Tuple…Tuple…Tuple…Tuple…Tuple…
1(1, 1)(1, 2)(1, 3)(1, 4)(1, 5)
2(2, 1)(2, 2)(2, 3)(2, 4)(2, 5)
3(3, 1)(3, 2)(3, 3)(3, 4)(3, 5)

With the following syntax, the existing column is modified without performing any copying (this is discouraged as it creates column alias).

x[!, :x1] = x[!, :x2]
x
3×5 DataFrame
Rowx1x2x3x4x5
Tuple…Tuple…Tuple…Tuple…Tuple…
1(1, 2)(1, 2)(1, 3)(1, 4)(1, 5)
2(2, 2)(2, 2)(2, 3)(2, 4)(2, 5)
3(3, 2)(3, 2)(3, 3)(3, 4)(3, 5)

this syntax is safer since it performs copy

x[!, :x1] = x[:, :x2]
3-element Vector{Tuple{Int64, Int64}}:
 (1, 2)
 (2, 2)
 (3, 2)

We can also use the following syntax to add a new column at the end of a DataFrame.

x[!, :A] = [1,2,3]
x
3×6 DataFrame
Rowx1x2x3x4x5A
Tuple…Tuple…Tuple…Tuple…Tuple…Int64
1(1, 2)(1, 2)(1, 3)(1, 4)(1, 5)1
2(2, 2)(2, 2)(2, 3)(2, 4)(2, 5)2
3(3, 2)(3, 2)(3, 3)(3, 4)(3, 5)3

A new column name will be added to our DataFrame with the following syntax as well:

x.B = 11:13
x
3×7 DataFrame
Rowx1x2x3x4x5AB
Tuple…Tuple…Tuple…Tuple…Tuple…Int64Int64
1(1, 2)(1, 2)(1, 3)(1, 4)(1, 5)111
2(2, 2)(2, 2)(2, 3)(2, 4)(2, 5)212
3(3, 2)(3, 2)(3, 3)(3, 4)(3, 5)313

Find column name#

x = DataFrame([(i,j) for i in 1:3, j in 1:5], :auto)
3×5 DataFrame
Rowx1x2x3x4x5
Tuple…Tuple…Tuple…Tuple…Tuple…
1(1, 1)(1, 2)(1, 3)(1, 4)(1, 5)
2(2, 1)(2, 2)(2, 3)(2, 4)(2, 5)
3(3, 1)(3, 2)(3, 3)(3, 4)(3, 5)

We can check if a column with a given name exists via hasproperty

hasproperty(x, :x1)
true

and determine its index via columnindex

columnindex(x, :x2)
2

Advanced ways of column selection#

these are most useful for non-standard column names (e.g. containing spaces)

df = DataFrame()
df.x1 = 1:3
df[!, "column 2"] = 4:6
df
3×2 DataFrame
Rowx1column 2
Int64Int64
114
225
336
df."column 2"
3-element Vector{Int64}:
 4
 5
 6
df[:, "column 2"]
3-element Vector{Int64}:
 4
 5
 6

or you can interpolate column names using the :() syntax

for n in names(df)
    println(n, "\n", df.:($n), "\n")
end
x1
[1, 2, 3]

column 2
[4, 5, 6]

Working on a collection of columns#

When using eachcol of a data frame the resulting object retains reference to its parent and e.g. can be queried with getproperty

df = DataFrame(reshape(1:12, 3, 4), :auto)
3×4 DataFrame
Rowx1x2x3x4
Int64Int64Int64Int64
114710
225811
336912
ec_df = eachcol(df)
3×4 DataFrameColumns
Rowx1x2x3x4
Int64Int64Int64Int64
114710
225811
336912
ec_df[1]
3-element Vector{Int64}:
 1
 2
 3
ec_df.x1
3-element Vector{Int64}:
 1
 2
 3

Transforming columns#

We will get to this subject later in 10_transforms.ipynb notebook, but here let us just note that select, select!, transform, transform! and combine functions allow to generate new columns based on the old columns of a data frame.

The general rules are the following:

  • select and transform always return the number of rows equal to the source data frame, while combine returns any number of rows (combine is allowed to combine rows of the source data frame)

  • transform retains columns from the old data frame

  • select! and transform! are in-place versions of select and transform

df = DataFrame(reshape(1:12, 3, 4), :auto)
3×4 DataFrame
Rowx1x2x3x4
Int64Int64Int64Int64
114710
225811
336912

Here we add a new column :res that is a sum of columns :x1 and :x2. A general syntax of transformations of this kind is:

source_columns => function_to_apply => target_column_name

then function_to_apply gets columns selected by source_columns as positional arguments.

transform(df, [:x1, :x2] => (+) => :res)
3×5 DataFrame
Rowx1x2x3x4res
Int64Int64Int64Int64Int64
1147105
2258117
3369129

One can omit passing target_column_name in which case it is automatically generated:

using Statistics
combine(df, [:x1, :x2] => cor)
1×1 DataFrame
Rowx1_x2_cor
Float64
11.0

Note that combine allowed the number of columns in the resulting data frame to be changed. If we used select instead it would automatically broadcast the return value to match the number of rows of the source:

select(df, [:x1, :x2] => cor)
3×1 DataFrame
Rowx1_x2_cor
Float64
11.0
21.0
31.0

If you want to apply some function on each row of the source wrap it in ByRow:

select(df, :x1, :x2, [:x1, :x2] => ByRow(string))
3×3 DataFrame
Rowx1x2x1_x2_string
Int64Int64String
11414
22525
33636

Also if you want columns to be passed as a NamedTuple to a function (instead of being positional arguments) wrap them in AsTable:

select(df, :x1, :x2, AsTable([:x1, :x2]) => x -> x.x1 + x.x2)
3×3 DataFrame
Rowx1x2x1_x2_function
Int64Int64Int64
1145
2257
3369

For simplicity (as this functionality is often needed) there is a special treatment of nrow function that can be just passed as a transformation (without specifying of column selector):

select(df, :x1, nrow => "number_of_rows")
3×2 DataFrame
Rowx1number_of_rows
Int64Int64
113
223
333

(note that in select the number of rows is automatically broadcasted to match the number of rows of the source data frame) Finally you can conveniently create multiple columns with one function, :

select(df, :x1, :x1 => ByRow(x -> [x ^ 2, x ^ 3]) => ["x1²", "x1³"])
3×3 DataFrame
Rowx1x1²x1³
Int64Int64Int64
1111
2248
33927

or (this produces the same result)

select(df, :x1, :x1 => (x -> DataFrame("x1²" => x .^ 2, "x1³" => x .^ 3)) => AsTable)
3×3 DataFrame
Rowx1x1²x1³
Int64Int64Int64
1111
2248
33927

Note that since DataFrames.jl row aggregation for wide tables is efficient. Here is an example of a wide table with sum (other standard reductions are similarly supported):

large_df = DataFrame(rand(1000, 10000), :auto)
1000×10000 DataFrame
9900 columns and 975 rows omitted
Rowx1x2x3x4x5x6x7x8x9x10x11x12x13x14x15x16x17x18x19x20x21x22x23x24x25x26x27x28x29x30x31x32x33x34x35x36x37x38x39x40x41x42x43x44x45x46x47x48x49x50x51x52x53x54x55x56x57x58x59x60x61x62x63x64x65x66x67x68x69x70x71x72x73x74x75x76x77x78x79x80x81x82x83x84x85x86x87x88x89x90x91x92x93x94x95x96x97x98x99x100
Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64Float64
10.6395620.04236180.7795940.1304530.1738120.5254160.3249650.9056490.08638950.5045120.8313620.6093320.3626460.2964890.1242940.4454280.3838770.7019390.8991780.8020260.5963130.5504650.01302670.3056850.2429410.9767320.8557570.1853390.4925880.8864980.06703870.2246320.9731810.7004970.9276050.2447540.5528130.2326830.5359750.7566540.6635620.4173510.6107870.322490.9779890.9593340.8256860.9332890.154890.4275860.9211590.04086990.1787350.1828790.2998490.6466160.1639780.6851450.8974060.6898550.4309540.6952620.004899710.6847370.1123930.6206270.3290970.5680490.534150.3684770.7137370.7916970.04364330.3567150.294340.84890.739440.5770090.3696290.03087080.06324580.6681240.4810550.6293090.933240.1075620.9824910.4534320.2815260.3728780.8371150.1964140.7764460.1919240.2566920.07578170.2743210.842960.8990230.00600951
20.8396220.7406990.3609690.4569340.3980930.5094470.3354320.3739520.3986620.8511820.4028620.8273480.2220650.6463950.1399920.7205840.06818180.4522830.6554160.9198540.6342870.5524840.398180.7220390.87560.4487690.5547550.6135620.7102130.004652150.9637630.1114640.5792450.07833180.8116020.05868960.1213530.4514260.4160950.1678020.2963370.680250.8650830.4555780.9849310.6992770.1136610.01724990.3897970.7314380.1798540.1818490.647220.737550.03871120.1631760.58310.6183150.8581660.4874370.6498560.5104680.2653830.7163450.8589970.4210350.712270.2109160.07283640.1150680.9233330.8720.3942730.5758640.9478650.5115220.006052840.8185240.2269280.9497360.7573840.660790.8274280.5681930.004215990.125460.5850290.315640.9814350.2297520.8261710.1335240.2869980.5447420.706280.612950.1305090.4735670.4109990.685049
30.9671430.3026720.7069020.06532160.6444170.9764570.368950.805530.7049880.2291580.4220510.08350240.06009020.1395510.8512710.5131280.41640.75230.1737360.1893010.3895650.7017140.7432980.4396590.6463570.05396690.8354870.6329890.3745620.2668120.3446140.09878430.2050530.01216580.7141310.947080.1611880.311770.5837150.8875390.3375760.06478350.781730.7964170.4266540.2647260.103210.3416790.1805020.3477920.1420750.1596540.8470520.5536830.5483420.8988750.1475090.349160.491930.8301470.759180.295230.5521790.3954060.2035920.3554770.1289120.4606290.9747180.5987440.5361910.492890.3374270.2668630.5988620.04807370.09735540.09529450.3279030.339650.9423630.4249440.6098470.04311330.9383130.6785120.2469450.7585310.1431850.541490.2907750.8540970.59340.04937150.3082890.9326130.1000650.831170.9640440.532569
40.2051680.6831280.7869090.8196350.7596630.5880190.2440110.8881360.7943670.3608230.1992590.8268670.7612330.04484820.8560250.9013080.5409440.5607510.3522950.7675410.443670.6784690.199660.7325220.5025410.5974130.6569330.3014440.1812410.1575320.7140830.1718520.422790.6993740.135070.6828530.5435540.08204180.2707090.8358110.3221010.3838210.399420.216420.6895870.2901820.07423310.7271360.2082750.4853640.4324170.6432450.1242930.8127270.3354840.01944310.1438560.2547430.479930.002363640.8963750.5287120.6008940.07055820.417250.10680.2674780.7455480.1298490.2693690.9683780.733230.2509920.07119080.7637790.8784080.6958540.8009810.08221550.2288320.6402360.7395130.6291270.1754190.6751910.8514470.8417810.7487650.8971750.5184250.5681430.7922760.5618120.599420.9275270.1053340.3250560.06151280.6681080.584317
50.5271840.229610.3957370.7128880.2862810.07841370.2143710.6936810.8127410.8501440.6339950.3803880.5134860.1042720.8941090.7746820.795410.9512640.2533080.2944830.4574230.152260.5173390.9598090.2618880.5622370.1253230.8833580.3015980.04224020.3551240.6420060.6916820.9116350.537460.5962860.3853530.6634630.5815720.3186940.4986420.5254280.5494030.9764010.1441090.5723320.3313460.6416370.9346120.9288310.6426980.255210.301130.6986480.7888030.933380.1888070.3906410.9168190.5170610.8440720.9029470.3227150.1589130.8491920.09437180.5398870.8537650.109270.5588120.4004480.9713530.8309610.3023480.6665660.176530.2345760.5530720.8047930.6611140.7945410.4953110.6968570.2689420.7920130.7398650.3058980.7847170.1546620.9507770.8107380.9917640.1801390.9543130.2973430.4369540.9784160.323790.4246630.877706
60.9511620.9637810.1764820.7511490.3943660.9458450.627040.967740.1033180.6749380.5501640.7174220.6060480.2958660.5389890.133010.9392150.4180930.6491850.9830290.5788340.05523650.1549840.5904660.1087760.4491780.2487310.1746720.9834690.215930.8209170.5566170.4293420.4368620.4354030.0410610.08404430.6519380.8182010.8399260.9951710.780290.02998240.6064470.4673010.8388080.6247650.6143410.7405680.3084660.1608960.6828420.5568880.07691520.8210160.4167310.3929410.230320.4250420.3616740.5704860.3834190.8125830.4964010.5389820.6335570.9947180.8938410.792990.9615180.6278310.04259850.4241320.869620.782640.1165150.7519770.08721140.1485020.1495640.7182680.7191930.3056530.7378010.06119810.2857030.834140.923050.08053780.4361710.03664270.4398640.7491470.9250190.5197980.5508350.2297060.4377170.458170.104438
70.07399570.2830350.7996180.9333210.5072720.7844820.7968790.6966120.8942120.3823620.9084640.3082480.2107290.3467360.8442220.8070140.9824180.8651510.7654270.8738130.4125940.3394310.3425320.3036840.1996160.2736810.09927140.8574830.6799870.3958990.8916780.9461460.4741670.1400580.5866560.3109850.3726750.970480.6969560.0005701750.7841090.4847970.4038140.8101460.3116770.6127990.3315930.6225820.6428230.6788490.5711780.05411660.3627220.1055720.5791290.4805780.3174660.4809730.2683290.3958280.5814770.6931150.0791050.439190.5734770.7646330.5429090.5719590.5234360.4727970.6946590.1613050.4216710.2260120.5773620.3938220.209440.1988580.8208260.6200170.2672110.5497760.7493440.8477380.1038220.2286320.3967430.93090.8097510.7603630.687310.8682710.6431340.6383360.2561930.6140160.9445160.9934620.5792410.0483441
80.1108170.02002350.1834450.6087630.3296290.3959990.2236540.5406220.3334670.953190.6237750.5461290.1712630.124020.7043570.9816820.382450.08249330.403610.7739830.3035020.3336620.8566460.7990110.007927590.9222410.05428920.8052160.04362830.05760580.2451660.05378740.6170310.5180090.3275810.4165860.3796060.5520330.0873960.5647310.02264060.1351140.6573730.5328590.2132920.5464420.1125930.8191730.1399770.1678240.7019220.9966120.4047180.542090.002651050.7087250.5530890.9455260.778760.3939420.2103560.564440.3666490.4909770.434660.04468140.9726880.1594080.624890.5989650.7436710.4164030.7939890.1310920.3909120.3884960.8572390.2494790.408680.3978580.6336080.3904160.6433160.5908170.6116920.949960.3131060.1438760.8177050.1122490.6487480.5097890.07375650.7851680.4789260.9406820.9583080.583430.6911150.786075
90.1039290.4893570.9436540.9814980.9064750.276050.3198540.5054380.278440.7787940.1305140.1695510.5961710.4587980.958050.03284010.585010.8344430.2859720.5525480.7243970.7449550.04883140.3906390.4657570.1604630.701250.1948930.5266460.3658760.03723430.7264420.01759730.7698480.4513650.4010560.4207270.5604090.4717660.3372630.1452290.07916140.7586290.6983820.755890.6292020.9028280.6053230.0346450.4914090.04710050.4264150.5183520.220790.03643430.9652190.2391230.3047060.6545970.3118240.1756380.0904160.9776950.6443370.8567630.6371810.3739460.986650.4686340.9692940.08330850.4587310.8229410.6335680.2166470.6801090.05034430.2177520.551260.05491940.9681640.6382070.4645170.3833130.130810.5242530.3273970.01784290.8572950.7290450.5560460.3171410.8010090.3815320.7840440.7873650.3110330.4103490.5515430.933318
100.8067040.5979940.2933380.714640.8214850.4217530.5786130.2742160.4245390.3796790.8398050.9024560.2527990.5635330.230670.8065730.4028570.72250.7639320.6635620.8390980.0269740.6153830.1433340.4448090.3679430.5063250.03979440.6043280.3571310.4225440.04097950.5339260.5017250.8213950.3740210.7695640.6765750.4392140.7595250.8249620.583220.1150940.9062210.8265370.8297070.7383760.4188510.1917790.4692790.2227180.5234480.1298090.007488830.4376030.0944940.4935510.1916080.4499340.6539040.6844180.02238810.7540440.3390280.3849080.2623170.9120230.7542090.5068180.8258130.4606990.002810850.9415870.06137820.1697320.4030690.1557110.3227380.9731020.07621170.5696240.348440.3353650.5825990.1072470.6077990.5121980.006371440.3288290.7148540.3399140.9858190.5002610.5215520.283770.209550.4696040.6526630.6836210.746581
110.8705390.08669830.7209780.9579360.4109780.1326530.6653720.5933250.04659870.1350420.05700360.1217090.4305510.7249990.468810.6263540.3974520.2549750.5174910.3734710.3844630.8975560.2578180.1671950.5606330.7262550.4782310.1850420.6249790.7711540.9121020.1113550.4643010.02008430.1705370.3341580.5883370.9806490.3135080.8002890.6845360.8135310.7480870.6074040.8654260.3644550.4073240.7191720.474750.5434480.8841250.4957340.8957770.3882430.7880630.4492470.3260030.9757980.02604810.8830350.550420.8713670.162960.8792330.5906510.7126710.9188690.8723220.6244340.3496210.2167770.6056720.2264410.06574250.1177510.5009550.196950.09735360.09541750.03888310.6461060.1414210.974550.1001590.5419990.2501480.9741780.8193750.6137930.3020140.4720270.3291890.1770030.3732910.8123040.4338180.5979390.2836120.7812180.550587
120.7902070.9577450.1445180.9880980.5589750.8556440.8900670.03554030.6147220.0107350.1317570.9856040.4877340.5043730.6391660.9403910.02466990.8114240.3190530.2268240.3422740.9953850.489070.03295170.5037770.7100120.208820.8676770.1974080.1743020.6792190.09844270.05571070.1873650.3131530.4076950.8541040.4431660.2199140.6811280.9596260.5076340.159650.7751830.7505620.7519460.6967140.565820.2558940.813490.493040.8141490.1858170.8234730.4503710.9353920.6739610.495670.6889480.4122660.7660710.4126450.403510.7005140.9222010.1641780.6554950.5979950.0743810.4606130.4281150.800450.1634320.6979370.8289250.7101060.7214340.8751230.1166410.5312620.1895460.8507230.8966290.2705880.05524210.8497680.01934520.3663110.7714150.2865020.635240.258160.7148180.4849160.5243710.1347770.4399610.8095170.5974240.110481
130.8003930.1555630.217580.8988220.7518690.5856480.9931670.9271080.8958420.6775540.9272350.3014370.7956410.6098690.9526450.8670560.475060.6707330.5617470.7498970.6912130.897340.3507250.9921920.3567510.526480.6963620.5431720.6369090.8575890.2833820.05063390.696030.03701070.06007060.4234990.6185010.1306170.7286380.8928690.2605760.4890660.449970.4486910.6457380.6035480.6357390.06141380.9143190.13290.344480.2842020.3998560.8943620.419530.7543060.6291040.1716040.1156640.8983240.1141510.02755490.08680220.8049940.9025780.7253420.4010180.7216720.8551850.2812440.1145540.6412070.7667980.01075820.4202910.4167820.9870190.2952080.09831960.4613590.7679110.1031420.976570.3560330.0431090.4382980.06899690.897050.6994770.06458480.07089570.3633450.6785570.365960.7143260.7813730.7086330.6710320.4901270.391542
9890.3186990.8556210.897890.1860050.7571650.5375270.5234550.8107020.4136440.2904250.9580960.5787650.634850.2622680.2459430.4970270.3668440.4148370.3461890.4067630.8119950.4500490.8898670.09758640.6984960.4699120.2113480.2702570.5112980.3246560.5672150.08822010.204430.8497210.1390730.3922520.1221650.5451880.6388740.1246670.7841960.6822750.8601030.7877960.2863250.8679090.9883580.2459360.2142670.05649610.2073050.7453150.5524970.535830.5194480.84160.8069090.4444270.1757870.7448330.2260120.8673890.5232750.7532080.9714460.9304040.04431510.7394930.1770520.4118510.5652020.2191970.7410810.8494910.9237640.1609240.1507550.7274820.3478770.9962830.9529410.819760.4048140.9497740.7260880.6390140.2982940.4909150.7180630.5522940.3848310.5493580.7243980.6266410.000120280.8545450.1954790.01221660.4950490.930874
9900.3855260.08115590.4796140.1633610.01020840.6495460.6576040.7200420.4658670.940450.7826270.6913670.06627540.7327910.5745790.3815990.07080260.6675650.5312750.5841480.1997240.4557640.6072530.9108830.7379460.7037310.8498840.4959020.2422810.8312060.2071930.0642640.001314960.9599670.3124190.5955870.2018430.00753840.8467420.8584280.5791440.4342240.3333090.6265360.5907390.06460440.4627750.4905850.7405370.5920940.1373670.5491060.8698870.7057170.7175860.3639970.3273150.6546020.2858810.737580.4769540.4390740.7729460.7748090.5586330.3596760.2496010.3108650.8836220.5949760.5907580.4941720.977840.5159250.1960560.7591240.2212630.5108250.683410.5443710.5263240.1923380.6470010.4226770.8335590.4556620.7750890.5544090.8625950.6043110.3480850.5560810.002587740.9247990.8405980.2396180.4703940.9673580.0383750.878066
9910.7675340.06177920.1761530.1318680.7243830.1232870.1075810.7298210.4575230.8286070.7768220.2442630.2993970.4122470.2387610.2073910.4629170.3646350.7760590.326080.8372590.4630380.01276770.7714290.1196940.4807730.06952850.8060730.9566750.8947710.1422010.8830670.5984910.5306360.8204370.311640.3522370.8907120.402350.4645370.5483430.04589530.6411450.9983340.1452570.08752820.3369530.6998960.4969310.7937470.5265830.6547460.436280.4885870.574850.2505520.4138330.7395910.716070.9119430.2734170.2242990.8007080.2567880.5916650.6806740.377920.5935670.2195880.1956330.5648930.6552710.6033450.6253390.5689710.7713760.1149520.8214320.5367260.8184440.2587960.02362640.1846010.5087940.0883570.9320510.8377060.6058770.8077120.04588140.1876220.09678990.0309520.7428760.408930.4901230.5953820.9439390.2662140.636875
9920.04182840.3355370.2689670.5067130.4691350.8545770.05256860.824360.7899380.2240310.4358110.2324250.2604170.09050460.6860030.7562960.8934110.7560070.07320880.562360.1707850.1256060.84140.6047930.308130.6121690.3542360.5930160.5675880.6005150.1740250.239010.05269410.8699110.5216150.290820.4105530.2738150.2939030.6633150.0544430.2207990.7977520.1112430.7367250.595330.237970.4302570.7786440.4281280.3815360.6178930.6226340.9023690.6137450.2335960.2414570.7674410.06053690.4119350.005237650.9693330.7594250.6849550.576010.441250.6708240.4518630.121510.9087850.4923280.5965490.1811930.5365840.5099930.8404490.02281640.7631830.6600110.2801080.9882540.4804850.524710.9233120.5747860.8523360.4356350.01902970.03349360.6538380.5420430.002974190.8838950.1466880.002453720.2411350.6789290.3263850.5073620.793913
9930.4815540.04418820.7001810.3176770.08467610.9491350.4573410.5715960.06401470.7812810.4328660.1192520.3952970.2860580.5126660.288920.8890650.3922830.6253260.6389380.2676460.7533920.6210890.06586050.594950.3438180.7706930.944880.2279650.609150.2968140.5297010.2071360.9590520.3836380.8924410.621960.1757270.5495170.1378180.9187470.5469680.6684770.4447440.9310120.1480760.5078960.6923970.9429580.8299740.5067190.6677150.3824460.3890340.5923720.2111120.05361740.4351040.6546130.09852650.7244920.1201030.1932830.1118220.1362940.8710790.4063650.1538370.4921830.07079540.02700110.8543670.768910.9607380.2564920.9018380.4570210.08120450.4421280.3974390.517910.757720.3237110.7798310.3319370.8963850.1516540.7528830.611110.2335290.4301810.1623690.6857530.7345980.7872280.3272470.5587460.6329980.5929220.329131
9940.4015280.6589030.4383090.2112170.2115150.4419020.02809030.4127170.1808550.6281660.9492950.02346950.6268410.706880.1976210.2164840.6077820.7696420.9499580.2493060.4810140.6978220.6818570.9208420.3917990.5672470.5814680.2750730.04149210.9606410.1203290.9550940.845510.5406470.0722970.4236890.5455050.2879230.2812480.6587820.4813550.5863610.5277560.6949760.7728770.877870.7820640.9810360.3934830.4788840.6737060.57270.5188010.5185920.7873060.322250.6681030.2346360.365280.9546820.9381050.9596230.1513420.9234380.3139450.005959740.9471030.8521350.1783260.5462210.362110.1433010.3712190.724530.1810770.5913350.8778930.7172750.3830120.1821250.07687440.9493920.4377710.1330590.9847110.7257450.921190.1498440.5910160.2998390.7939630.4350890.7397250.2333210.03057350.9453210.02681550.07563520.5713330.623045
9950.589850.9098570.3547350.4428290.4383220.8478350.8431310.7276180.0435370.29580.06261680.03758870.4805410.1873240.1596190.6818080.3824270.78190.1939150.9187420.3397730.9965880.07503270.6673840.8139430.6487440.7784510.3524970.8052570.9503760.2866050.8614750.1371770.5868760.7472030.5624110.6337590.007052070.5446060.8187140.7403850.569010.03708670.7075340.1199380.7546870.1130220.1531860.5717470.6648750.8847980.6862040.3364960.7599560.03500650.2383420.8299810.7782960.4001110.4603720.1221220.01003030.5143880.1576440.4397950.431170.1695050.4572440.5571650.8015130.702880.0819180.216220.2025250.9733810.6303590.6259550.8689390.05460230.3869190.1118630.4448760.01054330.7689420.946460.2666360.3342590.5335290.3424960.2980160.7689560.2070630.5874750.9017360.3374620.08861050.7542980.5959190.9558530.548087
9960.8719440.8211830.7256360.5216450.2307730.5067470.472830.9025590.8060890.7105610.3437070.2912330.9486280.5250340.4086630.7846390.2079990.9168740.9736970.5945860.1208180.5916780.5550850.2690470.1493410.8366790.1746230.06532850.2475790.8002290.8053760.1417250.700890.4842470.5427840.1333760.7064610.1394030.3110230.2521980.1105570.1394120.4025850.3133340.4855710.9234770.2322770.182730.2163540.345980.7167190.897750.859790.4690570.3530880.06580650.6306430.1946920.9455280.2632280.2274770.8987120.5738410.8347610.6789920.06985540.6067780.06647350.8709480.05660450.2404530.1189740.8149290.6289050.8349590.3416870.3038890.2020030.6394110.6972890.004219120.7997440.4888370.3356560.09531150.690990.9289790.6303340.2252440.9771070.1088070.6317750.04129760.6216930.4018180.5993010.2983240.4275010.01492240.466253
9970.7020690.3995820.3773310.5427350.386310.5553320.7428330.7876030.7282990.02052240.03922080.591810.1349890.05771180.2379580.664760.9412830.8017460.62680.8859240.987530.5556810.02252420.8672170.2133950.8444510.455560.4049910.5480410.2449420.3783650.6912790.4789790.9256380.5831010.1400490.7728560.5615870.003062170.5498840.3423370.5883160.2761320.5897430.2202190.5450510.639010.01123040.7899220.6199180.8881620.8885220.08715370.1708920.2576390.05142650.02851410.4959230.06451040.03699860.7375040.3521190.2098410.5400920.5922860.0273140.0921390.6007560.1648850.4090080.9472330.1778760.6433990.7420340.2695450.4648760.3382760.4649540.6132520.5616790.6126960.3137840.76750.9010550.6961080.01053660.2665480.004478120.5026270.4541810.2493650.3614950.8651660.5463430.9412370.8593120.4090520.326610.4009720.768701
9980.707030.1662080.458230.06822350.4584220.8369390.582080.7215860.1714530.3538990.9225170.3941510.6610910.3813410.5586790.8476870.6717010.3732120.1962670.3533110.8136220.1920310.9116450.4524650.6047910.7430380.7761480.003481420.3321030.9038270.887450.8918420.2034280.2590770.2434650.8774120.6144330.7669430.228140.3024350.8493760.1945020.9039990.03632420.5362680.8867660.4914610.873150.01482710.2570420.2105170.5701150.6844810.4660460.3676770.6923570.9224890.03157430.9649740.5232790.3380240.5096740.1633160.3624070.3012720.8795590.4992130.6318020.3316580.3704990.4503810.6048310.1259160.9344340.3061630.2071420.4710490.06688670.02325460.2122720.2679540.3987190.6959080.8505570.08759970.4217320.3309670.7848160.01308590.3411610.3962920.4127850.3027640.8499040.1752160.6870090.9092960.6925190.2444170.0393655
9990.828760.5261960.2989270.6393690.2615590.9790350.9346390.1213460.2515860.3938690.153340.1518820.6402860.008271460.3266730.1250690.5695020.2278710.5814910.4299510.8791470.05134710.9622910.2302740.5645540.1656250.01640290.6318120.6566750.7237220.7594310.7011230.5793140.816960.9626710.8291050.7208690.5063520.570070.914330.4973420.1899650.4761280.190980.8879680.08114970.3978930.9479950.4331290.778060.6255710.7164190.5537620.6804550.7768730.9473650.3684530.9084910.3372730.4708340.8579360.5875650.2462810.57150.4759060.3051290.4603350.2712970.2220140.3040690.7363940.2656660.743510.09042650.5796120.6214760.5746810.4277710.9352260.5339290.5406720.4589160.5198590.06490.7279340.9521530.6285220.774930.9510540.3720060.4685550.7872960.2634240.9445120.8889870.07663070.788490.497010.5706140.781092
10000.6605520.4353040.699590.1184180.5125710.3894090.5321960.06798560.7047320.753320.370920.8819580.736110.7714310.8126560.2465350.8726550.3827560.3596120.1787670.7690210.8693840.1383770.05590110.2081210.1067490.2918990.1601970.9111270.3769260.4552960.8603960.3249690.6533020.6423190.8139120.5346630.9219340.4941640.2753490.8002897.54625e-50.9121040.6145870.01113450.5503880.3893680.1267290.9957460.4255960.7185920.6683440.8625160.2310980.2098970.4364510.6563350.5565780.8048930.2581210.282220.6364240.6524430.2225650.4793680.4261490.1759310.4053260.008352870.5656610.4326380.09715710.4332510.9997490.5067840.7224610.6057420.04216950.8096220.5941250.2627330.9354390.965830.7635890.07380460.5549410.9382910.8786930.8739890.6587030.2633390.2776130.3873730.2390120.1401290.08741120.09752850.5776320.4064630.126622
@time select(large_df, AsTable(:) => ByRow(sum) => :sum)
  0.040210 seconds (26.27 k allocations: 1.419 MiB, 80.16% compilation time)
1000×1 DataFrame
975 rows omitted
Rowsum
Float64
14987.2
25016.2
34978.86
45018.0
55011.07
64991.09
74952.1
85006.35
94997.14
104994.29
115020.93
124917.99
135023.11
9894997.01
9905003.09
9914938.96
9924974.83
9934952.49
9945015.75
9955013.19
9964976.72
9975015.42
9985054.93
9995033.81
10005013.15
@time select(large_df, AsTable(:) => ByRow(sum) => :sum)
  0.008024 seconds (19.63 k allocations: 1.069 MiB)
1000×1 DataFrame
975 rows omitted
Rowsum
Float64
14987.2
25016.2
34978.86
45018.0
55011.07
64991.09
74952.1
85006.35
94997.14
104994.29
115020.93
124917.99
135023.11
9894997.01
9905003.09
9914938.96
9924974.83
9934952.49
9945015.75
9955013.19
9964976.72
9975015.42
9985054.93
9995033.81
10005013.15

This notebook was generated using Literate.jl.