uke
1 Reference
1.1 Dataframe
dataframe?
make-dataframe
dataframe-num-rows
dataframe-index-update
dataframe-column*-update
dataframe-columns
dataframe-column-ref
dataframe-column*-ref
dataframe-column-lift
dataframe-add-column*
dataframe-remove-column*
dataframe-reorder-column
dataframe-reverse-rows
dataframe-compact?
dataframe-compact
dataframe-select
dataframe-slice
dataframe-group-index
dataframe-group
dataframe-left-join
dataframe-cell-ref
dataframe-cell-ref*
for/  dataframe
for*/  dataframe
row-df
column-df
1.2 Column
column?
make-column
column=?
column*=?
column-name
column-size
column-index
column-properties
column-projection
column-store
column-name-update
column-index-update
column-properties-update
column-projection-update
column-ref
column-property-ref
column-push-index
column-compact?
column-compact
column-slice
column-render-cell
1.2.1 More Column Constructors
build-column
->column
vector->column
sequence->column
1.3 Index
index?
index-size
index-compose
index-max-range
index-compact?
index-ref
in-indices
index-pick
index-select
index-extract
index-slice
index-reverse
index-sort
vector-index?
make-vector-index
linear-index?
make-linear-index
linear-index-offset
linear-index-stride
1.4 Store
store?
store-length
store-ref
store-copy
store-append
1.5 Exceptions
uke:  exn
uke:  exn:  dataframe
uke:  exn:  column
uke:  exn:  index
1.6 Machete
create
group
where
slice
show
2 Changelog
2.1 2025.4.22
2.2 2025.3.14
8.16

uke🔗

Sam Phillips <samdphillips@gmail.com>

1 Reference🔗

 (require uke) package: uke-lib

Contains all bindings from uke/dataframe, uke/column, and uke/index.

1.1 Dataframe🔗

 (require uke/dataframe) package: uke-lib

procedure

(dataframe? v)  boolean?

  v : any/c

procedure

(make-dataframe cols #:index index)  dataframe?

  cols : (listof column?)
  index : index?

procedure

(dataframe-num-rows df)  nonnegative-integer?

  df : dataframe?

procedure

(dataframe-index-update df update/f)  dataframe?

  df : dataframe?
  update/f : (-> index? index?)

procedure

(dataframe-column*-update df update/f)  dataframe?

  df : dataframe?
  update/f : (-> (listof column?) (listof column?))

procedure

(dataframe-columns df)  (listof column?)

  df : dataframe?

procedure

(dataframe-column-ref df col-name fail)  any

  df : dataframe?
  col-name : symbol?
  fail : (-> any)

procedure

(dataframe-column*-ref df    
  col-name    
  fail    
  success)  any
  df : dataframe?
  col-name : symbols?
  fail : (-> any)
  success : (-> column? any)

procedure

(dataframe-column-lift df 
  combine 
  col-name ...) 
  (-> nonnegative-integer? any)
  df : dataframe?
  combine : (-> any/c ... any)
  col-name : symbol?

procedure

(dataframe-add-column* df cols ...)  dataframe?

  df : dataframe?
  cols : column?

procedure

(dataframe-remove-column* df col-name ...)  dataframe?

  df : dataframe?
  col-name : symbol?

procedure

(dataframe-reorder-column df col-names)  dataframe?

  df : dataframe?
  col-names : (listof symbol?)

procedure

(dataframe-reverse-rows df)  dataframe?

  df : dataframe?

procedure

(dataframe-compact? df)  boolean?

  df : dataframe?

procedure

(dataframe-compact df)  dataframe?

  df : dataframe?

procedure

(dataframe-select df choose?)  dataframe?

  df : dataframe?
  choose? : (-> nonnegative-integer? boolean?)

procedure

(dataframe-slice df start [size])  dataframe?

  df : dataframe?
  start : nonnegative-integer?
  size : nonnegative-integer?
   = (- (dataframe-num-rows df) start)

procedure

(dataframe-group-index df key/f)

  (hash/c any/c (listof nonnegative-integer?))
  df : dataframe?
  key/f : (-> nonnegative-integer? any/c)

procedure

(dataframe-group df key/f [aggr/f])  dataframe?

  df : dataframe?
  key/f : (-> nonnegative-integer? any/c)
  aggr/f : (-> dataframe? any/c) = values

procedure

(dataframe-left-join dfl    
  keyl    
  removel    
  dfr    
  keyr    
  remover)  dataframe?
  dfl : dataframe?
  keyl : (-> nonnegative-integer? any/c)
  removel : (listof symbol?)
  dfr : dataframe?
  keyr : (-> nonnegative-integer? any/c)
  remover : (listof symbol?)

procedure

(dataframe-cell-ref df col-name i)  any/c

  df : dataframe?
  col-name : symbol?
  i : nonnegative-integer?

procedure

(dataframe-cell-ref* df-index col-name i)  any/c

  df-index : index?
  col-name : symbol?
  i : nonnegative-integer?

syntax

(for/dataframe (column ...+) (for-clause ...)
  body-or-break ... body)

syntax

(for*/dataframe (column ...+) (for-clause ...)
  body-or-break ... body)
 
column = column-name
  | (column-name column-property ...)
     
column-property = property-name property-value

syntax

(row-df (column ...+) elems ...)

syntax

(column-df (column elems ...) ...+)

1.2 Column🔗

 (require uke/column) package: uke-lib

procedure

(column? v)  boolean?

  v : any/c

procedure

(make-column name    
  index    
  store    
  [#:properties props    
  #:projection proj])  any
  name : symbol?
  index : index?
  store : store?
  props : (hash/c keyword? any/c) = (hash)
  proj : (or/c (-> any/c any/c) #f) = #f

procedure

(column=? col1 col2)  boolean?

  col1 : column?
  col2 : column?

procedure

(column*=? idx1 col1 idx2 col2)  boolean?

  idx1 : index?
  col1 : column?
  idx2 : index?
  col2 : column?

procedure

(column-name column)  symbol?

  column : column?

procedure

(column-size column)  nonnegative-integer?

  column : column?

procedure

(column-index column)  index?

  column : column?

procedure

(column-properties column)  (hash/c keyword? any/c)

  column : column?

procedure

(column-projection column)  (or/c (-> any/c any/c) #f)

  column : column?

procedure

(column-store column)  store?

  column : column?

procedure

(column-name-update column update-name)  column?

  column : column?
  update-name : (-> symbol? symbol?)

procedure

(column-index-update column update-index)  column?

  column : column?
  update-index : (-> index? index?)

procedure

(column-properties-update column    
  update-properties)  column?
  column : column?
  update-properties : 
(-> (hash/c keyword? any)
    (hash/c keyword? any))

procedure

(column-projection-update column    
  update-projection)  column?
  column : column?
  update-projection : 
(-> (or/c (-> any/c any/c) #f)
    (or/c (-> any/c any/c) #f))

procedure

(column-ref column i)  any/c

  column : column?
  i : nonnegative-integer?

procedure

(column-property-ref column    
  property-name    
  [default])  any/c
  column : column?
  property-name : keyword?
  default : failure-result/c = #f

procedure

(column-push-index column index)  column?

  column : column?
  index : index?

procedure

(column-compact? column)  boolean?

  column : column?

procedure

(column-compact column)  column?

  column : column?

procedure

(column-slice column start [size])  columns?

  column : column?
  start : nonnegative-integer?
  size : nonnegative-integer? = (- (column-size col) start)

procedure

(column-render-cell column v)  string?

  column : column?
  v : any/c
1.2.1 More Column Constructors🔗

procedure

(build-column name    
  size    
  build    
  [#:properties props    
  #:projection proj])  column?
  name : symbol?
  size : nonnegative-integer?
  build : (-> nonnegative-integer? any/c)
  props : (hash/c keyword? any/c) = (hash)
  proj : (or/c (-> any/c any/c) #f) = #f

procedure

(->column name    
  sequence    
  [#:properties props    
  #:projection proj])  column?
  name : symbol?
  sequence : sequence?
  props : (hash/c keyword? any/c) = (hash)
  proj : (or/c (-> any/c any/c) #f) = #f

procedure

(vector->column name    
  vec    
  [#:properties props    
  #:projection proj])  column?
  name : symbol?
  vec : vector?
  props : (hash/c keyword? any/c) = (hash)
  proj : (or/c (-> any/c any/c) #f) = #f

procedure

(sequence->column name    
  sequence    
  [#:properties props    
  #:projection proj])  column?
  name : symbol?
  sequence : sequence?
  props : (hash/c keyword? any/c) = (hash)
  proj : (or/c (-> any/c any/c) #f) = #f

1.3 Index🔗

 (require uke/index) package: uke-lib

procedure

(index? v)  boolean?

  v : any/c

procedure

(index-size idx)  nonnegative-integer?

  idx : index?

procedure

(index-compose i1 i2 ...)  index?

  i1 : index?
  i2 : index?

procedure

(index-max-range idx)  nonnegative-integer?

  idx : index?

procedure

(index-compact?)  any/c

procedure

(index-ref idx nonnegative-integer?)  nonnegative-integer?

  idx : index?
  nonnegative-integer? : i

procedure

(in-indices idx)  (sequence/c nonnegative-integer?)

  idx : index?

procedure

(index-pick idx i*)  index?

  idx : index?
  i* : (sequence/c nonnegative-integer?)

procedure

(index-select idx pred?)  index?

  idx : index?
  pred? : (-> nonnegative-integer? boolean?)

procedure

(index-extract idx    
  [#:indices indices    
  #:select select/f    
  #:transform transform/f])  index?
  idx : index?
  indices : (sequence/c nonnegative-integer?) = (in-indices idx)
  select/f : (-> nonnegative-integer? boolean?) = (λ (i) #true)
  transform/f : (-> nonnegative-integer? nonnegative-integer?)
   = values

procedure

(index-slice idx start [size])  index?

  idx : index?
  start : nonnegative-integer?
  size : nonnegative-integer? = (- (index-size idx) start)

procedure

(index-reverse idx)  index?

  idx : index?

procedure

(index-sort idx lt?)  index?

  idx : index?
  lt? : 
(-> nonnegative-integer? nonnegative-integer?
    boolean?)

procedure

(vector-index? v)  boolean?

  v : any/c

procedure

(make-vector-index vec)  vector-index?

  vec : vector?

procedure

(linear-index? v)  boolean?

  v : any/c

procedure

(make-linear-index size [offset stride])  linear-index?

  size : nonnegative-integer?
  offset : nonnegative-integer? = 0
  stride : integer? = 1

procedure

(linear-index-offset idx)  nonnegative-integer?

  idx : linear-index?

procedure

(linear-index-stride idx)  integer?

  idx : linear-index?

1.4 Store🔗

 (require uke/store) package: uke-lib

procedure

(store? v)  boolean?

  v : any/c

procedure

(store-length s)  nonnegative-integer?

  s : store?

procedure

(store-ref s i)  any/c

  s : store?
  i : nonnegative-integer?

procedure

(store-copy s)  store?

  s : store?

procedure

(store-append s1 s2)  store?

  s1 : store?
  s2 : store?

1.5 Exceptions🔗

 (require uke/error) package: uke-lib

struct

(struct uke:exn exn:fail ())

struct

(struct uke:exn:dataframe uke:exn ())

struct

(struct uke:exn:column uke:exn ())

struct

(struct uke:exn:index uke:exn ())

1.6 Machete🔗

 (require uke/machete) package: uke-machete

qi syntax

(create [column-name column-property ...
         (input-column-names ...) flow] ...)
 
column-property = property-name property-value

qi syntax

(group (column-name ...+) maybe-key-flow maybe-aggregate-flow)

(group #:key key-flow maybe-aggregate-flow)
 
maybe-key-flow = 
  | #:key key-flow
     
maybe-aggregate-flow = 
  | #:aggregate aggregate-flow

qi syntax

(where (column-name ...+) select-flow)

qi syntax

(slice slice-spec)

 
slice-spec = everything
  | id
  | str
  | regexp
  | (or slice-spec ...+)
  | (and slice-spec ...+)
  | (not slice-spec)

procedure

(show df [#:nrows nrows #:widths widths])  any/c

  df : dataframe?
  nrows : nonnegative-integer? = 10
  widths : (listof nonnegative-integer?) = null

2 Changelog🔗

2.1 2025.4.22🔗

Release date: 2025/04/22
  • Base level documentation of core API completed

  • Expose "uke/store" library

  • Remove dataframe-column-lift inlining

  • Use more efficient projection for csv->dataframe

2.2 2025.3.14🔗

Release date: 2025/03/14
  • Initial Racket Package release