Skip to main content

The definitive entropy toolkit for time series data

Project description

entroscope

PyPI version Python versions CI License: MIT

The definitive entropy toolkit for time series data. Seven entropy measures, one consistent interface, working directly on pandas Series and numpy arrays.

It started in NextOnMenu: a falling Shannon entropy of a food's regional search interest turned out to be an early signal that it was about to trend. Computing it meant re-writing the same histogram-and-log boilerplate every time. entroscope is that code, written once.

pip install entroscope

Quick start

import pandas as pd
from entroscope import shannon

s = pd.Series([10, 20, 15, 80, 90, 85, 88, 92])

shannon.compute(s)              # 0.73 (a single entropy value)
shannon.rolling(s, window=20)   # rolling entropy over time (a Series)
shannon.delta(s, window=20)     # rate of change of entropy
shannon.normalized(s)           # entropy scaled to [0, 1]
shannon.plot(s, window=20)      # a matplotlib Figure

Every method accepts a pd.Series or a np.ndarray. Pass a Series and you get a Series back with its index preserved; pass an array and you get an array.

The seven measures

Measure Import Captures
Shannon entroscope.shannon Uncertainty in a binned distribution
Permutation entroscope.permutation Ordinal-pattern complexity (robust to noise)
Sample entroscope.sample Regularity / predictability
Approximate entroscope.approximate Regularity (less noise-sensitive, faster)
Spectral entroscope.spectral Spread of the power spectrum (frequency domain)
Differential entroscope.differential Continuous entropy via a fitted distribution
Multiscale entroscope.multiscale Sample entropy across coarse-grained time scales

One consistent API

Every measure exposes the same methods, so switching measures is a one-word change:

Method Input Returns
compute(x, **params) Series or ndarray float
rolling(x, window, **params) Series or ndarray Series/ndarray, same length (NaN warm-up)
delta(x, window, **params) Series or ndarray Series/ndarray (first difference)
normalized(x, **params) Series or ndarray float in [0, 1] (shannon/permutation/spectral only)
plot(x, window, **params) Series or ndarray matplotlib.figure.Figure

Shannon additionally provides geographic(df, col=...) for spatial distributions (e.g. search interest by region). Multiscale provides compute and plot.

Visualization

from entroscope import plot

# overlay several measures on one axis
plot.compare(s, measures=["shannon", "permutation", "spectral"], window=20)

# a grid of every measure at once
plot.dashboard(s, window=20)

# highlight where entropy drops sharply (trend / regime-change detection)
plot.drop_events(s, measure="shannon", window=20, threshold=0.4)

All plot functions return a matplotlib.figure.Figure and never call plt.show(), so they're safe in scripts, notebooks, and CI alike.

Real-world examples

Runnable scripts live in examples/; worked write-ups are in docs/examples/:

  • Food trends: detect when search interest stops being random (the original NextOnMenu use case).
  • Finance: market uncertainty via permutation and spectral entropy.
  • Medical: HRV, EEG seizure onset, respiration, and continuous glucose.
  • Business: sales demand, web-traffic anomalies, price volatility, and manufacturing QC.
# food-trend analysis: entropy drops before a trend goes mainstream
import pandas as pd
from entroscope import shannon

matcha = pd.read_csv("matcha_trends.csv")["interest"]
shannon.plot(matcha, window=20, title="Matcha entropy over time")

A sustained drop in rolling entropy means a signal is becoming structured rather than noisy, an early indicator of a forming pattern.

Requirements

Python 3.9+, with numpy, pandas, scipy, and matplotlib (installed automatically).

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

entroscope-0.1.1.tar.gz (18.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

entroscope-0.1.1-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

Details for the file entroscope-0.1.1.tar.gz.

File metadata

  • Download URL: entroscope-0.1.1.tar.gz
  • Upload date:
  • Size: 18.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for entroscope-0.1.1.tar.gz
Algorithm Hash digest
SHA256 9b6f0518ab6912e34abf42b5364544af5991d606745cc3573b04d4118c6e55ea
MD5 c5282a443355397ceb87bdca2658b99e
BLAKE2b-256 851f599eb5733581e4ac7a82c174f0ea1857f3bf4f9de07c92bc826ff7a01bea

See more details on using hashes here.

File details

Details for the file entroscope-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: entroscope-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 13.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for entroscope-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 98c97caf1e2780f7952f88404393ceeabfbfbd8211ddc2895b27e9e3685de0fc
MD5 6d7ede5625b96e1834079fa1e4c90d0f
BLAKE2b-256 2f1ffe63e07871d27a05545d97ce0d9e1711203c980c52c993f25a09cf547dc3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page