Compute “natural breaks” (Fisher-Jenks algorithm) on list / tuple / array / numpy.ndarray of integers/floats.
Intented compatibility: CPython 3.4+
Wheels are provided via PyPI for windows users - Also available on conda-forge channel for Anaconda users
This package consists of a single function (named jenks_breaks) which takes as input a list / tuple / array.array / numpy.ndarray of integers or floats.
It returns a list of values that correspond to the limits of the classes (starting with the minimum value of the series - the lower bound of the first class - and ending with its maximum value - the upper bound of the last class).
>>>importjenkspy>>>importrandom>>>list_of_values=[random.random()*5000for_inrange(12000)]>>>breaks=jenkspy.jenks_breaks(list_of_values,nb_class=6)>>>breaks(0.1259707312994962,1270.571003315598,2527.460251085392,3763.0374498649376,4999.87456576267)>>>importjson>>>withopen('tests/test.json','r')asf:...data=json.loads(f.read())...>>>jenkspy.jenks_breaks(data,nb_class=5)# Asking for 5 classes(0.0028109620325267315,2.0935479691252112,4.205495140049607,6.178148351609707,8.09175917180255,9.997982932254672)# ^ ^ ^ ^ ^ ^# Lower bound Upper bound Upper bound Upper bound Upper bound Upper bound# 1st class 1st class 2nd class 3rd class 4th class 5th class# (Minimum value) (Maximum value)
pip install jenkspy
git clone http://github.com/mthh/jenkspy
python setup.py install
For anaconda users
conda install -c conda-forge jenkspy
Requirements (only for building from source):
Python C headers
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
Getting the break values! (and fast!). No fancy functionnality provided,
but contributions/forks/etc are welcome.
Other python implementations are currently existing but not as fast nor available on PyPi.