histbook 1.2.5
Versatile, high-performance histogram toolkit for Numpy.
License: BSD 3-clause

.. image:: https://raw.githubusercontent.com/scikit-hep/histbook/master/docs/source/logo-500px.png
   :alt: histbook
   :target: https://github.com/scikit-hep/histbook

|

.. inclusion-marker-1-5-do-not-remove

histbook computes histograms from Numpy arrays. It differs from most other histogramming tools in that its histograms are primarily tables of numbers, rather than display graphics. Histograms can be filled and refilled iteratively through a large dataset, or in parallel and later combined with addition\*. Histograms have arbitrarily many dimensions with convenient methods for selecting, rebinning, and projecting into lower-dimensional spaces.

Axis dimensions are managed by algebraic expressions, rather than string labels or index positions, so they are computable: an axis named ``x + y`` requires two Numpy arrays, ``x`` and ``y``, which will be added before filling the histogram. Expressions in different axes or different histograms in the same "book" (a collection of named histograms) are computed in an optimized way, reusing subexpressions wherever possible for quicker filling without giving up clarity.

Histogram data may be exported to a variety of formats, such as `Pandas <https://pandas.pydata.org/>`__, `ROOT <https://root.cern/>`__, and `HEPData <https://github.com/HEPData/hepdata-submission>`__. It can also be plotted with `Vega-Lite <https://vega.github.io/vega-lite/>`__, which makes short work of projecting many dimensions of data as overlays and trellises.

(\*In this respect, histbook is like histogramming packages developed for particle physics, from `CERN HBOOK <http://cds.cern.ch/record/307945/files/>`__ in the 1970's (name similarity intended) to modern-day `ROOT <https://root.cern/>`__.)

.. inclusion-marker-2-do-not-remove

Installation
============

Install histbook like any other Python package:

.. code-block:: bash

    pip install histbook --user

or similar (use ``sudo``, ``--user``, ``virtualenv``, or pip-in-conda if you wish).

Strict dependencies:
====================

- `Python <http://docs.python-guide.org/en/latest/starting/installation/>`__ (2.7+, 3.4+)
- `Numpy <https://scipy.org/install.html>`__ (1.8.0+)

Recommended dependencies:
=========================

- `Pandas <https://pandas.pydata.org/>`__ for more convenient programmatic access to bin contents
- `Jupyter Notebook <http://jupyter.org/install>`__ for interlaced histogramming and plotting
- `JupyterLab <http://jupyterlab.readthedocs.io/en/stable/>`__ for a complete IDE-like environment
- `ipyvega <https://pypi.org/project/vega/>`__ to view plots in a Jupyter Notebook (not needed for JupyterLab)
- `Altair <https://altair-viz.github.io/>`__ to mix histograms with Altair graphics (usable in both Jupyter Notebook and JupyterLab)
- `VegaScope <https://pypi.org/project/vegascope/>`__ to view plots in a web browser *without* Jupyter
- `ROOT <https://root.cern/>`__ to analyze histograms in a complete statistical toolkit
- `uproot <https://pypi.org/project/uproot/>`__ to access ROOT files without the full ROOT framework

.. TODO NumExpr http://numexpr.readthedocs.io/en/latest/user_guide.html to accelerate the calculation of complex expressions

Tutorial
========

See the `project homepage <https://github.com/scikit-hep/histbook>`__ for a `tutorial <https://github.com/scikit-hep/histbook#tutorial>`__.

Interactive tutorial
====================

Run `this tutorial <https://mybinder.org/v2/gh/scikit-hep/histbook/master?filepath=binder%2Ftutorial.ipynb>`__ on Binder.

Reference documentation
=======================

* `Histograms <https://histbook.readthedocs.io/en/latest/histograms.html>`__
* `Books of histograms <https://histbook.readthedocs.io/en/latest/books-of-histograms.html>`__
* `Axis descriptors <https://histbook.readthedocs.io/en/latest/axis-descriptors.html>`__