Skip to main content

robustats

Robust statistics for NumPy — replaces mean with median for outlier-resistant data analysis.

PyPI Python License: MIT

Why?

NumPy's np.mean is sensitive to outliers. One extreme value can distort your entire analysis. robustats swaps mean with median by default — a far more robust estimator — while keeping the same familiar API.

data = [1, 2, 3, 4, 1000]

np.mean(data)      # 202.0  ← distorted by outlier
rs.mean(data)      #   3.0  ← robust, ignores outlier

Installation

pip install robustats

Quick Start

import numpy as np
import robustats as rs

data = [1, 2, 3, 4, 1000]

# Drop-in replacements
rs.mean(data)               # 3.0    (median, robust)
rs.nanmean(data)            # 3.0    (nanmedian, robust)
rs.std(data)                # 1.4826 (MAD-based, robust)
rs.var(data)                # 2.198  (MAD², robust)
rs.mad(data)                # 1.4826 (Median Absolute Deviation)

# Use arithmetic mean explicitly
rs.mean(data, use_median=False)    # 202.0

# Weighted median
rs.average(data, weights=[1,1,1,1,10])   # 5.0

Context Manager — patch np.mean temporarily

with rs.robust_mode():
    np.mean(data)     # 3.0 inside the block
np.mean(data)         # 202.0 restored after the block

Global Patch — replace np.mean everywhere

rs.patch_numpy()
np.mean(data)     # 3.0  (global replacement)

rs.unpatch_numpy()
np.mean(data)     # 202.0 (restored)

API Reference

Function Description
rs.mean(a, axis, use_median=True) Median (or mean) of array
rs.nanmean(a, axis, use_median=True) Nanmedian (or nanmean)
rs.std(a, axis, use_mad=True) MAD-based std (or numpy std)
rs.var(a, axis, use_mad=True) MAD²-based var (or numpy var)
rs.mad(a, axis, scale=1.4826) Median Absolute Deviation
rs.average(a, weights, use_median=True) Weighted median (or average)
rs.robust_mode() Context manager patching np.mean
rs.patch_numpy() Globally replace np.mean / np.nanmean
rs.unpatch_numpy() Restore originals

When to use robustats

  • Your data may have outliers or measurement errors
  • You're doing exploratory data analysis on real-world datasets
  • You need a quick drop-in without changing all your np.mean calls (robust_mode context)
  • You want robust standard deviation via MAD instead of classical std

License

MIT

Metadata

Release files for robustats-py 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for robustats-py 0.2.0
File Size Uploaded
robustats_py-0.2.0.tar.gz 10.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for robustats-py 0.2.0
File Interpreter ABI Platform
robustats_py-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 19.5 kB

Release files / robustats_py-0.2.0.tar.gz

Download URL robustats_py-0.2.0.tar.gz
Size 10.2 kB
Tags Source
SHA-256 checksum
How to use checksums
28826f3242db875d95ae71c980e5887a4b36dac9b33ada81ea61411f470da535
BLAKE2b-256 checksum
How to use checksums
257baa393e2c5be1e9572c85022bc1603a57e37bd93be2d05221b5cd863ce7dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release files / robustats_py-0.2.0-py3-none-any.whl

Download URL robustats_py-0.2.0-py3-none-any.whl
Size 9.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6c14ae24e0dd08e30ed33c4751d46b734b2d82b393e49ddeaafc26b0faa1778f
BLAKE2b-256 checksum
How to use checksums
dad4eb642c92384f151af7bd5a2dd02dcc0ed3eff3f41022fd16c78c26255e2f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page