Compute Natural Breaks (Jenks algorythm)

data-classification, jenks-fisher, python-library
pip install jenkspy==0.1.5


Fast Jenks breaks for Python

Compute "natural breaks" (Fisher-Jenks algorithm) on list/tuple/numpy.ndarray of integers/floats.

Intented compatibility: CPython 2.7+ and 3.4+

Wheels are provided via PyPI for windows users - Also available on conda-forge channel for Anaconda users

Version Anaconda-Server Badge Build Status travis Build status appveyor

Usage :

>>> import jenkspy
>>> import random
>>> list_of_values = [random.random()*5000 for _ in range(12000)]

>>> breaks = jenkspy.jenks_breaks(list_of_values, nb_class=6)

>>> breaks
    (0.1259707312994962, 1270.571003315598, 2527.460251085392, 3763.0374498649376, 4999.87456576267)

>>> import json
>>> with open('tests/test.json', 'r') as f:
...     data = json.loads(
>>> jenkspy.jenks_breaks(data, nb_class=5)
(0.0028109620325267315, 2.0935479691252112, 4.205495140049607, 6.178148351609707, 8.09175917180255, 9.997982932254672)


  • From pypi
pip install jenkspy
  • From source
git clone
cd jenkspy/
python install
  • For anaconda users
conda install -c conda-forge jenkspy

Requirements (only for building from source):

  • C compiler
  • Python C headers

Motivation :

  • Making a painless installing C extension so it could be used more easily as a dependency in an other package (and so learning how to build wheels using appveyor).
  • Getting the break values! (and fast!). No fancy functionnality provided, but contributions/forks/etc are welcome.
  • Other python implementations are currently existing.