A comprehensive Python utility library for statistical analysis, hypothesis testing, outlier detection, and data exploration.
Stats Weapons is a powerful statistical analysis toolkit designed to simplify complex statistical computations and hypothesis testing. It provides a unified interface for data loading, descriptive statistics, hypothesis testing (parametric and non-parametric), outlier detection, correlation analysis, and probability distribution fitting.
Author: Renery Carvalho
Last Updated: May 2, 2026
Email: reneryroniery@gmail.com
extract_data()- Load data from multiple formats:- Spreadsheets:
.csv,.xls,.xlsx,.xlsm - Databases:
.sql,.sqlite,.sqlite3,.db - Other formats:
.json,.parquet,.feather,.pkl,.txt,.xml,.h5,.hdf5 - Support for SQL Server via
pyodbcwith authentication options - Automatic data type inference and basic validation
- Spreadsheets:
basic_statistics()- Comprehensive dataset overview:- Statistical summaries (mean, median, std, quantiles, etc.)
- Data type analysis
- Missing value detection
- Correlation matrices
- Univariate and multivariate visualizations
- Distribution insights
normality_tests()- Multiple normality test methodologies:- Shapiro-Wilk test
- Kolmogorov-Smirnov test
- Anderson-Darling test
- D'Agostino-Pearson test
- Jarque-Bera test
- Lilliefors test
- Visual Q-Q plots
correlation_analysis()- Relationship detection:- Pearson correlation (linear relationships)
- Spearman correlation (monotonic relationships)
- Kendall correlation (non-parametric)
- Visualization and p-value reporting
outliers_detection()- Multiple outlier detection methods:- Z-score method
- IQR (Interquartile Range) method
- Isolation Forest
- Local Outlier Factor (LOF)
- One-Class SVM
- DBSCAN clustering
- Visual identification with boxplots
probability_distributions()- Distribution fitting and analysis:- Test data against multiple standard distributions
- Goodness-of-fit metrics
- Parameter estimation
- Visual distribution comparisons
test_population_mean()- Test population mean (t-test or z-test)test_population_proportion()- Test population proportiontest_population_variance()- Test population variance (chi-square test)
test_2independent_mean()- Compare means of two independent samplestest_2paired_mean()- Compare means of paired samples (paired t-test)test_2independent_proportion()- Compare proportions of two groupstest_2population_variance()- Compare variances of two populations (F-test)
test_1way_anova()- One-way ANOVA for comparing multiple groups- Includes post-hoc Tukey HSD testing
independent_mannwhitneyu()- Mann-Whitney U test for independent samplespaired_wilcoxon()- Wilcoxon signed-rank test for paired samplesindependent_chisquare_test()- Chi-square test of independenceindependent_exact_fisher()- Fisher's exact testdependent_mcnemar()- McNemar's test for paired categorical data
- Python 3.8 or higher
- pip package manager
-
Clone or download the project files
-
Navigate to the project directory:
cd statistical_functions -
Install dependencies:
pip install -r requirements.txt
Core libraries:
- pandas (3.0.3) - Data manipulation and analysis
- numpy (2.4.6) - Numerical computing
- scipy (1.17.1) - Scientific computing and statistical tests
- scikit-learn (1.9.0) - Machine learning and outlier detection
- statsmodels (0.14.6) - Advanced statistical analysis
- matplotlib (3.10.9) - Data visualization
- seaborn (0.13.2) - Statistical data visualization
- pyodbc (5.3.0) - SQL Server connectivity
from stats_weapons import extract_data, basic_statistics, normality_tests
# Load data from CSV
df = extract_data('data.csv')
# Get comprehensive statistics
stats_summary = basic_statistics(df)
# Test for normality
normality_results = normality_tests(df, methodology='all')# CSV file
df = extract_data('data.csv')
# Excel file
df = extract_data('data.xlsx', sheet_name='Sheet1')
# SQLite database
df = extract_data('database.db', table_name='my_table')
# SQL Server
df = extract_data(
'query.sql',
server='localhost',
database='mydb',
table_name='my_table',
username='user',
password='password'
)# Test if population mean equals 100
results = test_population_mean(sample_data, population_mean=100)
# Compare two independent samples
results = test_2independent_mean(sample1, sample2)
# One-way ANOVA
results = test_1way_anova([group1, group2, group3])
# Mann-Whitney U test (non-parametric)
results = independent_mannwhitneyu(sample1, sample2)# Detect outliers using Z-score
outliers = outliers_detection(df, methodology='z-score')
# Using Isolation Forest
outliers = outliers_detection(df, methodology='isolation_forest')
# Using Local Outlier Factor
outliers = outliers_detection(df, methodology='lof')statistical_functions/
βββ stats_weapons.py # Main statistical analysis module
βββ requirements.txt # Python package dependencies
βββ README.md # This file
βββ carbon1.png # Documentation/reference image
βββ carbon2.png # Documentation/reference image
βββ sts/ # Supplementary materials directory
| Function | Purpose | Parameters |
|---|---|---|
extract_data() |
Load data from multiple formats | file_path, **kwargs |
basic_statistics() |
Comprehensive descriptive analysis | df |
normality_tests() |
Test for normal distribution | df, methodology, alpha |
correlation_analysis() |
Analyze relationships between variables | df, target, methodology |
outliers_detection() |
Identify outliers in data | df, methodology |
probability_distributions() |
Fit and test probability distributions | data |
test_population_mean() |
Single population mean test | sample_data, population_mean, population_std, alpha |
test_2independent_mean() |
Two independent samples mean test | sample1, sample2, pop_std1, pop_std2, alpha |
test_1way_anova() |
ANOVA for multiple groups | samples, alpha |
independent_mannwhitneyu() |
Non-parametric rank test | sample1, sample2, alpha |
independent_chisquare_test() |
Chi-square independence test | contingency_table, alpha |
Most functions return a comprehensive dictionary containing:
- Test statistics and p-values
- Confidence intervals (where applicable)
- Effect sizes and assumptions checks
- Visual plots (PNG files or matplotlib figures)
- Interpretation and conclusions
-
Automatic Column Dropping: The
extract_data()function automatically drops the first column of loaded data. This is intentional behavior for handling index columns. -
SQL Server Authentication: For SQL Server connections, you can use either:
- Windows authentication (
Trusted_Connection=yes) - Username/password authentication
- Windows authentication (
-
Statistical Significance: All hypothesis tests use
alpha=0.05by default. Adjust this parameter based on your requirements. -
Two-tailed vs One-tailed: Most tests support
alternativeparameter with options:'two-sided'(default)'less''greater'
- Numeric types:
int,float,np.int64,np.float64 - String types: Categorical data for contingency tables
- Pandas objects:
Series,DataFrame - Array-like:
list,np.ndarray
- Data Preparation: Ensure your data is clean and properly formatted before analysis
- Missing Values: Handle missing values before statistical testing
- Assumptions: Always verify statistical test assumptions before interpreting results
- Visualization: Most functions include visualization outputs for better interpretation
- Effect Sizes: Pay attention to effect sizes, not just p-values
The module includes comprehensive error handling for:
- Missing files
- Unsupported file formats
- Invalid database connections
- Malformed input data
- Missing required parameters
For issues, questions, or contributions:
- Email: reneryroniery@gmail.com
- GitHub: Check project repository for updates
Developed and maintained by Renery Carvalho
Version: 1.0.0
Last Updated: May 2, 2026