IneqPy's Package
This package provides statistics to carry on inequality's analysis. Among the estimators provided by this package you can find:
| Main Statistics | Inequality Indicators |
|---|---|
| Weighted Mean | Weighted Gini |
| Weighted Variance | Weighted Atkinson |
| Weighted Coefficient of variation | Weighted Theil |
| Weighted Kurtosis | Weighted Kakwani |
| Weighted Skewness | Weighted Lorenz curve |
Installation
pip install ineqpy
# or from github's repo
pip install git+https://github.com/mmngreco/IneqPy.git
What you can find
Some examples of how use this package:
>>> import pandas as pd
>>> import numpy as np
>>> import ineqpy
>>> d = load_data() # dataframe
>>> d
renta factor
0 -13004.12 1.0031
89900 141656.97 1.4145
179800 1400.38 4.4122
269700 415080.96 1.3295
359600 69165.22 1.3282
449500 9673.83 19.4605
539400 55057.72 1.2923
629300 -466.73 1.0050
719200 3431.86 2.2861
809100 423.24 1.1552
899000 0.00 1.0048
988900 -344.41 1.0028
1078800 56254.09 1.2752
1168700 60543.33 2.0159
1258600 2041.70 2.7381
1348500 581.38 7.9426
1438400 55646.05 1.2818
1528300 0.00 1.0281
1618200 69650.24 1.2315
1708100 -2770.88 1.0035
1798000 4088.63 1.1256
1887900 0.00 1.0251
1977800 10662.63 28.0409
2067700 3281.95 1.1670
Descriptive statistics
>>> ineqpy.mean(variable=d.renta, weights=d.factor)
20444.700666031338
>>> ineqpy.var(variable=d.renta, weights=d.factor)
2982220948.7413292
>>> x, w = d.renta.values, d.factor.values
Note that the standardized moment for order
n, retrieve the value in that column:
nvalue 1 0 2 1 3 Skew 4 Kurtosis
A helpful table of interpretation of the moments
>>> ineqpy.std_moment(variable=x, weights=w, order=1) # ~= 0
2.4624948200717338e-17
>>> ineqpy.std_moment(variable=x, weights=w, order=2) # = 1
1.0
>>> ineqpy.std_moment(variable=x, weights=w, order=3) # = skew
5.9965055750379426
>>> ineqpy.skew(variable=x, weights=w)
5.9965055750379426
>>> ineqpy.std_moment(variable=x, weights=w, order=4) # = kurtosis
42.319928851703004
>>> ineqpy.kurt(variable=x, weights=w)
42.319928851703004
Inequality's estimators
# pass a pandas.DataFrame and inputs as strings
>>> ineqpy.gini(data=d, income='renta', weights='factor')
0.76739136365917116
# you can pass arrays too
>>> ineqpy.gini(income=d.renta.values, weights=d.factor.values)
0.76739136365917116
More examples and comparison with other packages:
We generate random weighted data to show how ineqpy works. The variables simulate being:
x : Income
w : Weights
To test with classical statistics we generate:
x_rep : Income values replicated w times each one.
w_rep : Ones column.
Additional information:
np : numpy package
sp : scipy package
pd : pandas package
gsl_stat : GNU Scientific Library written in C.
ineq : IneqPy
Mean
>>> np.mean(x_rep) = 488.535714286
>>> ineq.mean(x, w) = 488.535714286
>>> gsl_stat.wmean(w, x) = 488.5357142857143
Variance
>>> np.var(x_rep) = 63086.1364796
>>> ineq.var(x, w) = 63086.1364796
>>> ineq_stat.wvar(x, w, kind=1) = 63086.1364796
>>> ineq_stat.wvar(x, w, kind=2) = 63247.4820972
>>> gsl_stat.wvariance(w, x) = 63993.161585889124
>>> ineq_stat.wvar(x, w, kind=3) = 63993.1615859
Covariance
>>> np.cov(x_rep, x_rep) = [[ 63247.48209719 63247.48209719]
[ 63247.48209719 63247.48209719]]
>>> ineq_stat.wcov(x, x, w, kind=1) = 63086.1364796
>>> ineq_stat.wcov(x, x, w, kind=2) = 4.94065645841e-324
>>> ineq_stat.wcov(x, x, w, kind=3) = 9.88131291682e-324
Skewness
>>> gsl_stat.wskew(w, x) = -0.05742668111416989
>>> sp_stat.skew(x_rep) = -0.058669605967865954
>>> ineq.skew(x, w) = -0.0586696059679
Kurtosis
>>> sp_stat.kurtosis(x_rep) = -0.7919389201857214
>>> gsl_stat.wkurtosis(w, x) = -0.8540884810553052
>>> ineq.kurt(x, w) - 3 = -0.791938920186
Percentiles
>>> ineq_stat.percentile(x, w, 25) = 293
>>> np.percentile(x_rep, 25) = 293.0
>>> ineq_stat.percentile(x, w, 50) = 526
>>> np.percentile(x_rep, 50) = 526.0
>>> ineq_stat.percentile(x, w, 90) = 839
>>> np.percentile(x_rep, 90) = 839.0
Another way to use this is through the API module as shown below:
API's module
Using API's module:
>>> data = Survey(data=data, columns=columns, weights='w')
>>> data.df.head()
x w
0 111 3
1 711 4
2 346 4
3 667 1
4 944 1
Statistics
>>> data.weights = w
>>> df.mean(main_var) = 488.535714286
>>> df.percentile(main_var) = 526
>>> df.var(main_var) = 63086.1364796
>>> df.skew(main_var) = -0.0586696059679
>>> df.kurt(main_var) = 2.20806107981
>>> df.gini(main_var) = 0.298494329293
>>> df.atkinson(main_var) = 0.0925853855635
>>> df.theil(main_var) = 0.156137490566
Metadata
Release files for IneqPy 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| IneqPy-0.4.1.tar.gz | 39.9 kB | Without provenance | Details for IneqPy-0.4.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| IneqPy-0.4.1-py3-none-any.whl | Python 3 | none | any | Details for IneqPy-0.4.1-py3-none-any.whl |
Total release size: 65.9 kB
Release files / IneqPy-0.4.1.tar.gz
| Download URL | IneqPy-0.4.1.tar.gz |
|---|---|
| Size | 39.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b5d23724082121b968f568caa8eb2fdabb15c78b455cb4eb18e1197d06cb2ebe
|
|
BLAKE2b-256 checksum How to use checksums |
5e7c9ceb267a4211196b32a0597ae4e20b014b5f52decc8c9a4da42d7703317a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.16
|
Release files / IneqPy-0.4.1-py3-none-any.whl
| Download URL | IneqPy-0.4.1-py3-none-any.whl |
|---|---|
| Size | 26.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9057ecf32fd40aafbefc82f86559460cf3634105eb851ce3b47c8239d9553ec8
|
|
BLAKE2b-256 checksum How to use checksums |
fbc27a34940a932cafc15959513efa412d3174b947cc9a59eebf7ec00b41ed59
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.16
|
Security for IneqPy 0.4.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.