caio.co/de/go-tdigest


README fixup by Caio 10 years ago (log)

Blob README.md

Showing rendered content. Download source code


T-Digest

A map-reduce and parallel streaming friendly data-structure for accurate quantile approximation.

This package provides a very crude implementation of Ted Dunning's t-digest data structure in Go.

Installation

go get github.com/caio/go-tdigest

Usage

import ("github.com/caio/go-tdigest" "math/rand" "fmt")

compression := 10
t := tdigest.New(compression)

for i := 0; i < 10000; i++ {
    t.Update(rand.Float64(), 1)
}

fmt.Printf("p(.5) = %.6f\n", t.Percentile(0.5))

Disclaimer

I've written this solely with the purpose of understanding how the data-structure works, it hasn't been throughly verified nor have I bothered with optimizations for now.

References

This is a very simple port of the reference implementation with some ideas borrowed from the python version. If you wanna get a quick grasp of how it works and why it's useful, this video and companion article is pretty helpful.