A python collection of classes and functions to help with numbers along with collections of numbers i.e., statistics.
Project description
PyStatistics
A python collection of classes and functions to help with numbers along with collections of numbers i.e., statistics.
Installation
With git
GitHub:
git clone https://github.com/IrtsaDevelopment/PyStatistics.git
With pip
PyPi
pip install idev-pystatistics
Usage
To import:
from PyStatics.NumberTypes import *
from PyStatics.Conversions import *
from PyStatics.Factoring import *
from PyStatics.Lists import *
NumberTypes
Includes classes defining extra number types of Decimal, WeightedNumber, and Fraction.
Decimal
decimal = Decimal(1, 4)
decimal = Decimal(1, "04")
decimal = Decimal("1", 4)
decimal = Decimal("1", "342")
# A Decimal has two main parts, the integeral and fractional (left and right side of the decimal point).
# Note that when creating a Decimal, the inputs can accept integers, or strings to allow for leading zeros before a decimal.
decimal = Decimal(1, 3412)
print(decimal)
# Printing the Decimal as is will print off the decimal as expected.
# Result: 1.3412
decimal = Decimal(1, "0043284238472923798")
print(decimal)
# This can be expanded more to allow for more decimal places to be displayed.
# Result: 1.0043284238472923798
The Decimal class also has the following properties:
decimal.integeral
decimal.fractional
# Corresponding parts of the Decimal.
decimal.stringForm
# Will return a string version of the Decimal.
decimal.floatForm
# Will return a float version of the Decimal, note that some accuracy may be lost when doing so.
WeightedNumber
weightedNumber = WeightedNumber(100, 10)
weightedNumber = WeightedNumber(100.0, 10.0)
weightedNumber = WeightedNumber(100, 0.1)
# A WeightedNumber has two main parts, the number and the weight as a percentage (both represented as an integer or float).
# Note that when creating a WeightedNumber, the weight can either be between 0-1 or 0-100 and either will be recognized as a valid weight percentage.
weightedNumber = WeightedNumber(100, 10)
print(weightedNumber)
# Printing the WeightedNumber as is will print off the number and it's weight percentage.
# Result: 100 - 10.0%
weightedNumber = WeightedNumber(10, 0.1)
print(weightedNumber)
# As expected, both values are treated as 10%
# Result: 100 - 10.0%
The WeightedClass class also has the following properties:
weightedNumber.number
weightedNumber.weight
# Corresponding number and weight of the number in their given form.
weightedNumber.weightType
# Will return 'whole' or 'decimal' depending on the value range and type of the given weight.
weightedNumber.percentForm
# Will return the weight as a percentage.
weightedNumber.stringForm
# Will return a string version of the WeightedNumber.
weightedNumber.floatForm
# Will return a float version of the WeightedNumber (the number multiplied by the weight).
Fraction
fraction = Fraction(10, 100)
fraction = Fraction(100, 10)
# A Fraction has two main parts, the numerator and the denominator (both represented as an integer).
fraction = Fraction(10, 100)
print(fraction)
# Printing the Fraction as is will print off a simplified fraction representation of the numbers.
# Result: 1/10
The Fraction class also has the following properties:
fraction.numerator
fraction.denominator
# Corresponding numerator and denominator of the Fraction.
fraction.stringForm
# Will return a string version of the Fraction.
fraction.floatForm
# Will return a float version of the Fraction (the numerator divided by the denominator).
The Fraction class also has the following function(s):
fraction.simplify()
# Will return the Fraction simplified to have the lowest possible numerator and denominator and still be equal.
fraction = Fraction(120, 140)
print(fraction.simplify())
# Result: 6/7
Matrix
matrix = Matrix([1, 3, 2], [1, 3, 4], [7, 3, 1])
# A Matrix has is comprised of columns and rows, each row of the column is a separate argument in the form of a list.
# Note that Matrix division currently only supports Matrices of 2x2 or 3x3.
matrix = Matrix([1, 3, 2], [1, 3, 4], [7, 3, 1])
print(matrix)
# Printing the Matrix as is will print off the matrix in a grid format.
# Result:
# 1 3 2
# 1 3 4
# 7 3 1
The Matrix class also has the following properties:
matrix.matrix
# A list containing the rows of the matrix (list of lists).
matrix.dimensions
# Will return a tuple of the dimensions of the matrix (rows, columns).
Each of the classes supports the ability to have arithmetic operations be performed.
fractionA = Fraction(1, 2)
fractionB = Fraction(1, 5)
print(fractionA + fractionB)
# Result: 7/10
print(fractionA - fractionB)
# Result: 3/10
print(fractionA * fractionB)
# Result: 1/10
print(fractionA / fractionB)
# Result: 5/2
decimalA = Decimal(1, 5)
decimalB = Decimal(2, 8)
print(decimalA + decimalB)
# Result: 4.3
print(decimalA - decimalB)
# Result: -1.7
print(decimalA * decimalB)
# Result: 4.2
print(decimalA / decimalB)
# Result: 0.5357142857142857
weightedNumberA = WeightedNumber(10, 30)
weightedNumberB = WeightedNumber(10, 70)
print(weightedNumberA + weightedNumberB)
# Result: 10.0
print(weightedNumberA - weightedNumberB)
# Result: 4.0
print(weightedNumberA * weightedNumberB)
# Result: 21.0
print(weightedNumberA / weightedNumberB)
# Result: 0.42857142857142855
matrixA = Matrix([10, 9], [8, 8])
matrixB = Matrix([2, 1], [3, 2])
print(matrixA + matrixB)
# Result:
# 12 10
# 11 10
print(matrixA - matrixB)
# Result:
# 8 8
# 5 6
print(matrixA * matrixB)
# Result:
# 47 28
# 40 24
print(matrixA / matrixB)
# Result:
# 11.0 8.0
# 8.0 8.0
When performing mixed class arithmetic operations, the preceding class type will be the output type.
fraction = Fraction(1, 3)
decimal = Decimal(1, 4242)
weightedNumber = WeightedNumber(100, 30)
print(fraction + decimal)
# Result: 26363/15000
# Fraction
print(decimal + weightedNumber)
# Result: 31.4242
# Decimal
print(weightedNumber + fraction)
# Result: 30.33
# WeightedNumber
Current python int and float classes are supported in mixed class arithmetic operations.
fraction = Fraction(1, 3)
decimal = Decimal(1, 4242)
weightedNumber = WeightedNumber(100, 30)
print(2.0 - decimal)
# Result: 0.5758
print(fraction - 1)
# Result: -2/3
print(weightedNumber + 3)
# Result: 33.0
Matrices are supported in mixed class arithmetic operations, though the Matrix has to be the proceeding type and the arithmetic will be applied to each value in the Matrix.
matrix = Matrix([1, 3], [4, 9])
fraction = Fraction(1, 2)
decimal = Decimal(1, 45)
weightedNumber = WeightedNumber(100, 30)
print(matrix + decimal)
# Result:
# 2.45 4.45
# 5.45 10.45
print(matrix - fraction)
# Result:
# 0.5 2.5
# 3.5 8.5
print(matrix * weightedNumber)
# Result:
# 30.0 90.0
# 120.0 270.0
print(matrix - 3)
# Result:
# -2 0
# 1 6
Conversions
Includes functions dedicated to converting between different NumberTypes including current Int and Float types.
Functions
float_to_fraction(number: float) -> Fraction
# Will convert a Float value to a Fraction value.
int_to_fraction(number: int) -> Fraction
# Will convert an Int value to a Fraction value.
decimal_to_fraction(number: Decimal) -> Fraction
# Will convert a Decimal value to a Fraction value.
weightedNumber_to_fraction(number: WeightedNumber) -> Fraction
# Will convert a WeightedNumber value to a Fraction value.
float_to_decimal(number: float) -> Decimal
# Will convert a Float value to a Decimal value.
int_to_decimal(number: int) -> Decimal
# Will convert an Int value to a Decimal value.
fraction_to_decimal(number: Fraction) -> Decimal
# Will convert a Fraction value to a Decimal value.
weightedNumber_to_decimal(number: WeightedNumber) -> Decimal
# Will convert a WeightedNumber value to a Decimal value.
float_to_weightedNumber(number: float, weight: int | float) -> WeightedNumber
# Will convert a Float value with a provided weight value to a WeightedNumber value.
int_to_weightedNumber(number: int, weight: int | float) -> WeightedNumber:
# Will convert a Int value with a provided weight value to a WeightedNumber value.
decimal_to_weightedNumber(number: Decimal, weight: int | float) -> WeightedNumber
# Will convert a Decimal value with a provided weight value to a WeightedNumber value.
fraction_to_weightedNumber(number: Fraction, weight: int | float) -> WeightedNumber
# Will convert a Fraction value with a provided weight value to a WeightedNumber value.
print(float_to_fraction(0.3123))
# Result: 3123/10000
# Fraction
print(fraction_to_decimal(Fraction(3123, 10000)))
# Result: 0.31
# Decimal
# Note: Slight accuracy lost.
print(weightedNumber_to_decimal(WeightedNumber(10, 0.1)))
# Result: 1.0
# Decimal
Factoring
Includes functions dedicated to factoring numbers.
Functions
checkIfPrime(number: int) -> bool
# A boolean function that checks if an integer number is a prime number or not.
# True if is, False otherwise.
Factors(number: int) -> list
# Returns a list of the factors of an integer number.
PrimeFactors(number: int) -> list
# Returns a list of the prime factorization of an integer number.
GreatestCommonFactor(Data: list[int] | tuple[int]) -> int
# Returns the GCF (Greatest Common Factor) from a list (or tuple) of integers.
print(checkIfPrime(12323232131))
# Result: False
print(Factors(12323232131))
# Result: [1, 7, 29, 203, 60705577, 424939039, 1760461733, 12323232131]
print(PrimeFactors(12323232131))
# Result: [7, 29, 60705577]
print(GreatestCommonFactor([42387132, 4238, 232342]))
# Result: 2
Lists
Includes functions dedicated to traditional statics such as mean, median, and mode.
Functions
Mode(Data: list[WeightedNumber, Fraction, Decimal, int, float] | tuple[WeightedNumber, Fraction, Decimal, int, float]) -> int | float
# Returns the mode (most common number) of a given list (or tuple) of numbers.
Median(Data: list[WeightedNumber, Fraction, Decimal, int, float] | tuple[WeightedNumber, Fraction, Decimal, int, float]) -> int | float
# Returns the median (middle of the list when ordered) of a given list (or tuple) of numbers.
Mean(Data: list[WeightedNumber, Fraction, Decimal, int, float] | tuple[WeightedNumber, Fraction, Decimal, int, float]) -> float
# Returns the mean (average of the summed numbers) of a given list (or tuple) of numbers.
QuartileFirst(Data: list[WeightedNumber, Fraction, Decimal, int, float] | tuple[WeightedNumber, Fraction, Decimal, int, float]) -> float
# Returns the Q1 (first quartile) (the middle of the first half of the list when ordered [~25%]) of a given list (or tuple) of numbers.
QuartileThird(Data: list[WeightedNumber, Fraction, Decimal, int, float] | tuple[WeightedNumber, Fraction, Decimal, int, float]) -> float
# Returns the Q3 (third quartile) (the middle of the second half of the list when ordered [~75%]) of a given list (or tuple) of numbers.
InterQuartileRange(Data: list[WeightedNumber, Fraction, Decimal, int, float] | tuple[WeightedNumber, Fraction, Decimal, int, float]) -> float
# Returns the IQR (inter quartile range) (the difference between the third and first quartiles) of a given list (or tuple) of numbers.
Range(Data: list[WeightedNumber, Fraction, Decimal, int, float] | tuple[WeightedNumber, Fraction, Decimal, int, float]) -> float
# Returns the range (the difference between the highest and lowest value) of a given list (or tuple) of numbers.
Outliers(Data: list[WeightedNumber, Fraction, Decimal, int, float] | tuple[WeightedNumber, Fraction, Decimal, int, float]) -> list
# Returns the outliers (any number falling outside of a specific range determined by the different of the Q1 and 1.5 times the IQR and the sum of Q3 and 1.5 times the IQR) of a given list (or tuple) of numbers.
Variance(Data: list[WeightedNumber, Fraction, Decimal, int, float] | tuple[WeightedNumber, Fraction, Decimal, int, float]) -> float
# Returns the variance (the spread between the numbers) of a given list (or tuple) of numbers.
StandardDeviation(Data: list[WeightedNumber, Fraction, Decimal, int, float] | tuple[WeightedNumber, Fraction, Decimal, int, float]) -> float
# Returns the SD (standard deviation) (the amount of variation relative to the mean) of a given list (or tuple) of numbers.
MeanAbsoluteDeviation(Data: list[WeightedNumber, Fraction, Decimal, int, float] | tuple[WeightedNumber, Fraction, Decimal, int, float]) -> float
# Returns the MAD (mean absolute deviation) (the average distance between each number and the mean) of a given list (or tuple) of numbers.
AverageIncrease(Data: list[WeightedNumber, Fraction, Decimal, int, float] | tuple[WeightedNumber, Fraction, Decimal, int, float]) -> float
# Returns the AI (average increase) (the average amount each value is increased) of a given list (or tuple) of numbers.
AverageMultiplication(Data: list[WeightedNumber, Fraction, Decimal, int, float] | tuple[WeightedNumber, Fraction, Decimal, int, float]) -> float
# Returns the AM (average multiplication) (the average amount each value is multiplied) of a given list (or tuple) of numbers.
AverageIncreaseInterpolation(Data: list[WeightedNumber, Fraction, Decimal, int, float] | tuple[WeightedNumber, Fraction, Decimal, int, float]) -> list
# Returns an interpolation (estimating other potential values of a list of numbers) of a given list (or tuple) of numbers by using the AI (average increase) of the list (or tuple).
AverageMultiplicationInterpolation(Data: list[WeightedNumber, Fraction, Decimal, int, float] | tuple[WeightedNumber, Fraction, Decimal, int, float]) -> list
# Returns an interpolation (estimating other potential values of a list of numbers) of a given list (or tuple) of numbers by using the AM (average multiplication) of the list (or tuple).
PointIncreaseInterpolation(Data: list[WeightedNumber, Fraction, Decimal, int, float] | tuple[WeightedNumber, Fraction, Decimal, int, float]) -> list
# Returns an interpolation (estimating other potential values of a list of numbers) of a given list (or tuple) of numbers by using the mean of each number and the number after.
PointMultiplicationInterpolation(Data: list[WeightedNumber, Fraction, Decimal, int, float] | tuple[WeightedNumber, Fraction, Decimal, int, float]) -> list
# Returns an interpolation (estimating other potential values of a list of numbers) of a given list (or tuple) of numbers by using the AM (average multiplication) of each number and the number after.
Data = [43, 321, 912, 213, 213, 9, 34843]
print(Mode(Data))
# Result: 213
print(Median(Data))
# Result: 213
print(Mean(Data))
# Result: 52220.0
print(QuartileFirst(Data))
# Result: 119.5
print(QuartileThird(Data))
# Result: 9072.25
print(InterQuartileRange(Data))
# 8952.75
print(Range(Data))
# 34834.0
print(Outliers(Data))
# Result: [34843]
print(Variance(Data))
# Result: 170696185.67
print(StandardDeviation(Data))
# Result: 13065.08
print(MeanAbsoluteDeviation(Data))
# Result: 8463.14
print(AverageIncrease(Data))
# Result: 5800.0
print(AverageMultiplication(Data))
# Result: 647.17
print(AverageIncreaseInterpolation(Data))
# Result: [43.0, 2943.0, 321.0, 3221.0, 912.0, 3812.0, 213.0, 3113.0, 213.0, 3113.0, 9.0, 2909.0, 34843.0]
print(AverageMultiplicationInterpolation(Data))
# Result: [43.0, 13914.15, 321.0, 103870.78, 912.0, 295109.52, 213.0, 68923.6, 213.0, 68923.6, 9.0, 2912.26, 34843.0]
print(PointIncreaseInterpolation(Data))
# Result: [43.0, 182.0, 321.0, 616.5, 912.0, 562.5, 213.0, 213.0, 213.0, 111.0, 9.0, 17426.0, 34843.0]
print(PointMultiplicationInterpolation(Data))
# Result: [43.0, 160.5, 321.0, 456.0, 912.0, 106.5, 213.0, 106.5, 213.0, 4.5, 9.0, 17421.5, 34843.0]
Additional Notes
Accuracy may be lost at times when converting between number formats.
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
File details
Details for the file idev-pystatistics-1.2.0.tar.gz
.
File metadata
- Download URL: idev-pystatistics-1.2.0.tar.gz
- Upload date:
- Size: 15.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f15ced4b6be5a93e3349d4d1d2321ee0edc6983eb72c5f4ec620ce10e81be340 |
|
MD5 | 96c03b2c16c717ff0f9afac3c8bf62bf |
|
BLAKE2b-256 | 356767a8dbdbc44b5978ba43dc1aa2c0f2a3d6865de9619cfa9926f11c27d854 |
File details
Details for the file idev_pystatistics-1.2.0-py3-none-any.whl
.
File metadata
- Download URL: idev_pystatistics-1.2.0-py3-none-any.whl
- Upload date:
- Size: 12.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | de516e803457f596d903af5193e191c5b745df9c33e2f511b56d855c3b04de81 |
|
MD5 | bc16f25eed717af1208165be30f63f43 |
|
BLAKE2b-256 | 10eb0ce30a3520dc94e868f95de267404c4d6ffa474a0ab7f269acfbc56b3b48 |