Skip to main content

A Python package that intelligently selects the most robust average (mean, median, or mode) for price analysis

Project description

Robust Average

A Python package that intelligently selects the most robust average (mean, median, or mode) for price analysis based on outlier and skewness detection.

Installation

pip install robust-average

Quick Start

from robust_average import robust_average

# Example with clean data
prices = [97.87, 109.99, 129.99, 89.99, 119.99]
result = robust_average(prices)
print(f"Selected average: {result['value']} (method: {result['method']})")
# Output: Selected average: 109.99 (method: mean)

# Example with outliers
prices_with_outlier = [97.87, 109.99, 129.99, 89.99, 119.99, 500.00]
result = robust_average(prices_with_outlier)
print(f"Selected average: {result['value']} (method: {result['method']})")
# Output: Selected average: 109.99 (method: median)

Features

  • Automatic Method Selection: Intelligently chooses between mean, median, or mode
  • Outlier Detection: Uses IQR method to identify and handle outliers
  • Skewness Analysis: Measures data distribution asymmetry
  • Transparent Results: Returns the method used and supporting statistics
  • Business Ready: Ensures accurate price reporting for contracts and compliance

How It Works

The function uses a systematic approach to select the most appropriate average:

  1. Outlier Detection (IQR Method):

    • Calculates Q1 (25th percentile) and Q3 (75th percentile)
    • Defines outliers as values outside [Q1 - 1.5×IQR, Q3 + 1.5×IQR]
  2. Skewness Analysis:

    • Calculates skewness coefficient using scipy.stats.skew()
    • Values close to 0 indicate symmetric distribution
  3. Decision Criteria:

    • Use MEAN if: No outliers AND |skewness| < 0.5
    • Use MEDIAN if: Outliers present OR |skewness| ≥ 0.5
    • Use MODE if: A single value appears in >50% of the dataset

API Reference

robust_average(prices, return_all_stats=False)

Parameters:

  • prices (list or pd.Series): List or Series of numeric prices
  • return_all_stats (bool): If True, returns all computed statistics

Returns:

{
    'value': selected_average_value,
    'method': 'mean' | 'median' | 'mode',
    'mean': mean_value,
    'median': median_value,
    'mode': mode_value_or_None,
    'std': standard_deviation,
    'skew': skewness,
    'outliers': list_of_outlier_values,
    'count': number_of_prices
}

Use Cases

  • Price Analysis: Ensure accurate average prices for reporting
  • Contract Negotiations: Use defensible statistics in pricing discussions
  • Compliance Reporting: Meet regulatory requirements with robust averages
  • Data Quality: Automatically handle messy, real-world price data

Requirements

  • Python >= 3.8
  • numpy >= 1.20.0
  • pandas >= 1.3.0
  • scipy >= 1.7.0

License

MIT License

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

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

robust_average-0.1.3.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

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

robust_average-0.1.3-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file robust_average-0.1.3.tar.gz.

File metadata

  • Download URL: robust_average-0.1.3.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for robust_average-0.1.3.tar.gz
Algorithm Hash digest
SHA256 0b1538d787a18b5e1fb3876e686b3accd23dbc224199e579fc8f8b4ab4e6f16a
MD5 5b79e7de9da067a2c3ca80120084c72b
BLAKE2b-256 daf0fe6b6b5c061f6e56105fae562c5004c9202cc1ff3f771f778d39646a1970

See more details on using hashes here.

File details

Details for the file robust_average-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: robust_average-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 5.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for robust_average-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ab832ec5cfa81713408f949547756652b6f4d8b4184e1c4148843042cae0b1ec
MD5 c2a0578c6222f978f66e5074531cccef
BLAKE2b-256 0444385cb79e6ef78b8fa6844ec331013639f803e3457b599eecc8d6977dd938

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