Hist ist ein analytikerfreundliches Frontend für Boost-Histogram, das für Python 3.8+ entwickelt wurde (3.6-3.7-Benutzer erhalten ältere Versionen). Sehen Sie, was es Neues gibt.
Sie können diese Bibliothek von PyPI mit pip installieren:
python3 -m pip install „hist[plot,fit]“
Wenn Sie die Plotfunktionen nicht benötigen, können Sie die Extras [plot]
und/oder [fit]
überspringen. [fit]
wird derzeit in WebAssembly nicht unterstützt.
Hist bietet derzeit alles, was Boost-Histogram bietet, und die folgenden Verbesserungen:
Hist erweitert Achsen mit Namen:
name=
ist eine eindeutige Bezeichnung, die jede Achse beschreibt.
label=
ist eine optionale Zeichenfolge, die beim Plotten verwendet wird (standardmäßig name
, wenn nicht angegeben).
Indizierung, Projektion und mehr unterstützen benannte Achsen.
Experimental NamedHist
ist ein Hist
, der die meisten Formen des Positionszugriffs deaktiviert und Benutzer dazu zwingt, nur Namen zu verwenden.
Die Hist
-Klasse erweitert bh.Histogram
um eine einfachere Konstruktion:
flow=False
ist eine schnelle Möglichkeit, den Fluss für die Achsen beim Bau zu deaktivieren.
Speicher können per String angegeben werden.
storage=
kann weggelassen werden, Zeichenfolgen und Speicher können positionell sein.
data=
kann ein Histogramm mit vorhandenen Daten initialisieren.
Hist.from_columns
kann zur Initialisierung mit einem DataFrame oder Diktat verwendet werden.
Sie können mit boost-histogram (oder anderen Erweiterungen) hin und her konvertieren.
Hist unterstützt QuickConstruct, ein importfreies Konstruktionssystem, das keine zusätzlichen Importe erfordert:
Verwenden Sie Hist.new.<axis>().<axis>().<storage>()
.
Achsennamen können vollständig ( Regular
) oder kurz ( Reg
) sein.
Histogrammargumente (wie data=
) können im Speicher abgelegt werden.
Erweiterte Histogrammfunktionen:
Direkte Unterstützung für .name
und .label
, wie Achsen.
.density()
berechnet die Dichte als Array.
.profile(remove_ax)
kann ein ND COUNT-Histogramm in ein (N-1)D MEAN-Histogramm konvertieren.
.sort(axis)
unterstützt das Sortieren eines Histogramms nach einer kategorialen Achse. Erhält optional eine Funktion zum Sortieren.
.fill_flattened(...)
wird abgeflacht und gefüllt, einschließlich der Unterstützung für AwkwardArray.
.integrate(...)
, das die entgegengesetzten Argumente als .project
annimmt.
Hist implementiert UHI+; eine Erweiterung des UHI-Systems (Unified Histogram Indexing), die für importfreie Interaktivität entwickelt wurde:
Verwendet das Suffix j
, um im Zugriff oder in Slices zu Datenkoordinaten zu wechseln.
Verwendet j
Suffix für Slices zum Rebinen.
Strings können direkt zur Indizierung in String-Kategorieachsen verwendet werden.
Schnelle Plotroutinen fördern die Erkundung:
.plot()
stellt 1D- und 2D-Plots bereit (oder verwenden Sie plot1d()
, plot2d()
)
.plot2d_full()
zeigt 1D-Projekte rund um einen 2D-Plot.
.plot_ratio(...)
erstellt ein Verhältnisdiagramm zwischen dem Histogramm und einem anderen Histogramm oder einer aufrufbaren Datei.
.plot_pull(...)
führt einen Pull-Plot durch.
.plot_pie()
erstellt ein Kreisdiagramm.
.show()
bietet einen schönen Str-Ausdruck mit Histoprint.
Stapel: Arbeiten Sie mit Gruppen von Histogrammen mit identischen Achsen
Stapel können mit h.stack(axis)
erstellt werden, wobei der Index oder der Name einer Achse verwendet wird ( StrCategory
-Achsen ideal).
Sie können auch mit hist.stacks.Stack(h1, h2, ...)
erstellen oder from_iter
oder from_dict
verwenden.
Sie können einen Stapel indizieren und einen Eintrag mit einem passenden Histogramm festlegen.
Stacks unterstützen .plot()
und .show()
mit Namen (Plotbeschriftungen verwenden standardmäßig die ursprünglichen Achseninformationen).
Stapel durchlaufen .project
, *
, +
und -
.
Neue Module
intervals
unterstützen frequentistische Abdeckungsintervalle.
Bereit für das Notebook: Hist verfügt über eine wunderschöne Darstellung im Notebook.
Keine Abhängigkeiten erforderlich
from hist import Hist# Schnelle Konstruktion, keine weiteren Importe erforderlich:h = (Hist.new.Reg(10, 0, 1, name="x", label="x-axis") .Var(range(10), name="y", label="y-axis") .Int64() )# Das Auffüllen mit Namen ist erlaubt:h.fill(y=[1, 4, 6], x=[3, 5, 2])# Namen können zur Manipulation des Histogramms verwendet werden:h.project("x") h[{"y": 0.5j + 3, "x": 5j}]# Sie können auf Datenkoordinaten zugreifen oder mit einem „j“-Suffix rebinieren:h[0.3j:, ::2j] # x von .3 bis zum Ende, y wird um 2 neu gegliedert# Elegante Plotfunktionen:h.plot()h.plot2d_full()h.plot_pull(Callable)
Verwenden Sie von einem Git-Checkout aus entweder nox oder führen Sie Folgendes aus:
python -m pip install -e .[dev]
Informationen zum Einrichten einer Entwicklungsumgebung finden Sie unter Beitragsrichtlinien.
Wir möchten den Mitwirkenden danken, die dieses Projekt möglich gemacht haben (Emoji-Taste):
Henry Schreiner ? | Nino Lau ? | Chris Burr | Nick Amin | Eduardo Rodrigues | Andrzej Novak | Matthew Feickert |
Kyle Cranmer | Daniel Antrim | Nicholas Smith | Michael Eliachevitch | Jonas Eschle |
Dieses Projekt folgt der All-Contributors-Spezifikation.
07.07.2021 PyHEP 2021 – Hochleistungs-Histogrammierung für die HEP-Analyse?
08.09.2020 IRIS-HEP/GSOC – Hist: Histogrammierung für die Analyse mit Boost-Histogramm?
07.07.2020 SciPy Proceedings ?
17.07.2020 PyHEP 2020 ?
Diese Bibliothek wurde hauptsächlich von Henry Schreiner und Nino Lau entwickelt.
Diese Arbeit wurde durch die Kooperationsvereinbarungen OAC-1836650 (IRIS-HEP) und OAC-1450377 (DIANA/HEP) der National Science Foundation unterstützt. Alle in diesem Material geäußerten Meinungen, Erkenntnisse, Schlussfolgerungen oder Empfehlungen sind die der Autoren und spiegeln nicht unbedingt die Ansichten der National Science Foundation wider.