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:
-
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]
-
Skewness Analysis:
- Calculates skewness coefficient using scipy.stats.skew()
- Values close to 0 indicate symmetric distribution
-
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 pricesreturn_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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file robust_average-0.1.4.tar.gz.
File metadata
- Download URL: robust_average-0.1.4.tar.gz
- Upload date:
- Size: 6.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b486286693e008f6647cca90c698a93d4381cc741b197a1bed8b56db4a83c48b
|
|
| MD5 |
c4b5dc1d3d90465e9e92116092038f34
|
|
| BLAKE2b-256 |
c5913a98f27a683ed803ffe49b65fdd1c75f12ee342b2fe51df0b56a23685083
|
File details
Details for the file robust_average-0.1.4-py3-none-any.whl.
File metadata
- Download URL: robust_average-0.1.4-py3-none-any.whl
- Upload date:
- Size: 5.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be4a682061bba5fc9871177c71f7267ea1080ab99f45c6e3466f7cc62e835d01
|
|
| MD5 |
b1643ae170fae5809d0000caaee8abdf
|
|
| BLAKE2b-256 |
255ec38e4c6f9266ce6aa4033576149b31b40310527d5d6bca1a81591109cab5
|