wochen = reihe.groupby(np.arange(tage) // 7).mean()
grenzen = {"rund (950)": 950.0,
"Ziel minus 5 Prozent (950)": 950.0,
"zwei Sigma": wochen.mean() - 2 * wochen.std(ddof=1),
"ein Sigma": wochen.mean() - 1 * wochen.std(ddof=1)}
print({k: round(float(v), 2) for k, v in grenzen.items()})
for nm, grenze in grenzen.items():
treffer = int((wochen < grenze).sum())
print(f"{nm:<28} Grenze {grenze:7.2f} Alarme {treffer:2d} von {len(wochen)}"
f" ({100 * treffer / len(wochen):5.1f} Prozent)")
print({"mittel": round(float(wochen.mean()), 2),
"sd": round(float(wochen.std(ddof=1)), 2),
"minimum": round(float(wochen.min()), 2),
"maximum": round(float(wochen.max()), 2)})
fig, achse = plt.subplots(figsize=(7, 3))
_ = achse.plot(wochen.to_numpy(), color="0.35")
_ = achse.axhline(grenzen["zwei Sigma"], ls="--", lw=2, color=AKZENT,
label="zwei Sigma")
_ = achse.axhline(grenzen["ein Sigma"], ls=":", lw=2, color="0.55",
label="ein Sigma")
_ = achse.axhline(950, ls="-.", lw=2, color="0.2", label="rund 950")
_ = achse.set_ylim(900, 1100)
_ = achse.legend(fontsize=7, frameon=False, loc="lower left")
_ = achse.set_xlabel("Woche")
_ = achse.set_ylabel("Stück")
plt.tight_layout()
plt.show()