Sorting and Grouping
Sorting dataframes by column values and grouping rows by a key column. Demonstrates sort_values for ordering and group_by_column for split-apply-combine aggregations.
(*---------------------------------------------------------------------------
Copyright (c) 2026 The Raven authors. All rights reserved.
SPDX-License-Identifier: ISC
---------------------------------------------------------------------------*)
open Talon
let () =
let df =
create
[
("city", Col.string [| "Paris"; "Paris"; "Lyon"; "Lyon"; "Nice" |]);
("sales", Col.float64 [| 1200.; 800.; 450.; 900.; 500. |]);
("units", Col.int32 [| 10l; 8l; 5l; 9l; 6l |]);
]
in
Printf.printf "== original ==\n";
print df;
Printf.printf "\n== sorted by sales desc ==\n";
let df_sorted = sort_values ~ascending:false df "sales" in
print df_sorted;
Printf.printf "\n== group by city, show sums ==\n";
let groups = group_by df (Row.string "city") in
List.iter
(fun (city_name, sub) ->
let total_sales = Agg.sum sub "sales" in
let total_units = Agg.sum sub "units" in
Printf.printf "- %s: sales=%.0f units=%.0f\n" city_name total_sales
total_units)
groups;
()