Skip to content

Modulo chido para no escribir tanto en probabilidad y estadística

Notifications You must be signed in to change notification settings

GJZ26/Probabilidad-Y-Estadistica

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Probabilidad Y Estadísitica

Las herramientas de Probabilidad Y Estadísitica (PyE Tools) son un conjunto de funciones que te ayudan a realizar tablas de distribución de frecuencia de forma fácil y bonita :).

Este proyecto consta de un módulo:

Y de un aplicativo:

En este archivo explicaremos cada uno de ellos:

DocxVersion

DocxVersion es una aplicación que lee un problema y datos de un archivo .txt y genera un documento .docx con la solución del problema.

Para usarlo, necesitas descargar este proyecto con el comando:

git clone https://github.com/GJZ26/Probabilidad-Y-Estadistica.git

Una vez dentro del proyecto, instalaremos una dependencia necesaria.

pip install python-docx

Y listo! tendremos el proyecto listo para ejecutarlo. Dentro de la carpeta del proyecto, se encuentra un documento llamado problem.txt, en caso de no encontrarlo, deberás crear un documento con el mismo nombre.

Este texto deberá contener la descripción del problema y los datos.

La descripción del problema debe estar escrita despues de la palabra clave DE: separado por un salto en blanco, por ejemplo:

DE:
Esta es una descripción, aparecerá en el documento junto al problema.
Puede ser multilínea, aunque en el documento no se verá reflejado :)

Aunque es recomendable hacer este paso, no es obligatorio, por lo que puede ser omitido.

Para declarar los datos numérico, lo haremos uno a uno separado por una linea nueva. Estos datos deben ser escritos después de la palabra clave DA:, como se muestra a continuación:

DA:
52
16
71
12
28
51
13

De tal forma que obtendremos un documento con la siguiente estructura:

DE:
Esta es una descripción, aparecerá en el documento junto al problema.
Puede ser multilínea, aunque en el documento no se verá reflejado :)
DA:
52
16
71
12
28
51
13

Una vez finalizado este paso, podremos ejecutar el programa con:

python DocxVersion.py

El cuál nos genarará un documento llamado result.docx, que tendrá la siguiente información:

Result.docx

PyE_tools

Es un módulo que contiene una serie de funciones para calcular tablas de frecuencia a partir de una serie de datos dada.

No es necesario la instalación de ninguna otra dependencia.

Algoritmo de ordenamiento

Este módulo provee de algoritmo de ordamiento de datos de tipo numéricos, dentro de los cuales se halla

  • Estables
    • bubbleSort()
    • gnomeSort()
    • insertionSort()
  • Inestables
    • selectionSort()

Cada uno de estos métodos recibe un único parámetro de tipo list, el cual contiene los datos a organizar y retorna una nueva lista, por lo que es importante guardar el retorno de esta función de una nueva variable.

Ejemplo:

import PyE_tools as pye

data = [2, 5, 3, 1, 4, 6]

dataSorted = pye.bubbleSort(data)
         # o pye.gnomeSort(data)
         # o pye.insertionSort(data)
         # o pye.selectionSort(data)

print(data) # [2, 5, 3, 1, 4, 6]
print(dataSorted) # [1, 2, 3, 4, 5, 6]

Normalización de tipo de variables

Este módulo cuenta con una función llamada listToDecimal(), que convierte todos los valores de una lista de datos a variables de tipo decimal, es recomendable hacer esto antes de realizar cualquier otro paso.

Este método SÍ cambia la lista original

Aquí un ejemplo de uso:

import PyE_tools as pye

data = [1,2.2,3]

print(data) # [1, 2.2, 3]
pye.listToDecimal(data)
print(data) # [Decimal(1.0), Decimal(2.2), Decimal(3.0)]

Cuando se trabaja con números punto flotante, algunos lenguajes pueden tener errores al realizar operaciones, esto se debe a su naturaleza numérica, ya que trabajan con sistemas con base 2, mientras que nosotros usamos sistemas base 10.

Para resolver estos inconvenientes, podemos usar tipo de datos como Decimal para solventar estos errores.

Estos son algunos de los errores:

Resta de 1.83 - 1.43 con variables de tipo float.

a = 1.83
b = 1.43
print (a-b) # 0.40000000000000013

Resta de 1.83 - 1.43 con variables de tipo Decimal redondeado.

import decimal

a = decimal.Decimal(1.83)
b = decimal.Decimal(1.43)
print (a-b) # Decimal (0.4000000000000001332267629550)

Resta de 1.83 - 1.43 con variables de Decimal, convertido desde un String.

import decimal

a = decimal.Decimal(str(1.83))
b = decimal.Decimal(str(1.43))
print (a-b) # Decimal (0.40)

De esta forma, podemos realizar operaciones con datos con decimales de forma precisa.

Calculo de Distribución

klassesNumber()

Calcula el número de clases de debe tener una tabla de frecuencia según los datos dados

  • Parámetros:
    • Data [List]: Lista de datos
  • Retorno [Int]: Número de las clases previstas

Ejemplo:

import PyE_tools as pye

data = [1,2,3,4,5,6]
k = pye.klassesNumber(data)

print(k) # 4

dataRange()

Calcula el rango de los datos de una lista dada, esta puede ser ordenada o no.

  • Parámetros:
    • sortedData [list]: Lista de los datos, debe ser una lista con las variables tratadas, véase: Normalización de tipo de variables.
    • isSorted [bool] [defecto: True]: Define si la lista dada está o no ordenada, en caso de ser True, el método ordenará la lista y hará el cálculo.
  • Retorno [int || float]: Rango de los datos

Ejemplo:

import PyE_tools as pye

data = [5,2,1,4,6,3]

# Resultado con los datos desordenado: Erróneo
pye.dataRange(data) # -2

# Para ordenar y luego realizar el cálculo
pye.dataRange(data, False) # 5

dataAmplitudeByList()

Calcula la amplitud de los datos dados, a través de una lista.

Nota: Los datos dados están redondeado al número entero mayor más cercano en caso de tener una unidad de variación igual a 1.

  • Parámetros:
    • data [list]: Lista de los datos, debe ser una lista con las variables tratadas, véase: Normalización de tipo de variables.
    • isSorted [bool] [defecto: True]: Define si la lista dada está o no ordenada, en caso de ser True, el método ordenará la lista y hará el cálculo.
  • Retorno [Decimal]: Amplitud de los datos

Ejemplo:

import PyE_tools as pye

data = [5,2,1,4,6,3]

# Resultado con los datos desordenado: Erróneo
pye.dataAmplitudeByList(data) # 0

# Para ordenar y luego realizar el cálculo
pye.dataAmplitudeByList(data, False) # 2

variationUnit()

Identifica la unidad de variación de la lista tomando en cuenta el número con mayor decimales de la lista.

  • Parámetro
    • data [list]: Lista con los datos.
  • Retorno [Decimal]: Unidad de variación.

Ejemplo:

import PyE_tools as pye

data1 = [1, 2, 3]

data2 = [1.1, 2.2, 3.4]

data3 = [1.1, 2.12, 3.123]

pye.variationUnit(data1) # 1.0
pye.variationUnit(data2) # 0.1
pye.variationUnit(data3) # 0.001

calculateFrecuencyByDataList()

Esta función calcula la cada clase de la tabla de distribución de frecuencia.

Ejemplo de uso.

import PyE_tools as pye
from decimal import Decimal

data = [1, 2, 3, 4, 5, 6]
numero_de_clases = 4
amplitud = Decimal(2)
unidad_de_variacion = Decimal(1.0)

table_info = pye.calculateFrecuencyByDataList(data, numero_de_clases, amplitud, unidad_de_variacion)

print(table_info) # [[...][...][...]...] longitud = numero_de_clases
print(table_info[0]) # ['A', 1, Decimal('2.0'), 2, Decimal('1.5'), Decimal('0.5'), Decimal('2.5')]

Donde:

table_info[n] # ['A', 1, Decimal('2.0'), 2, Decimal('1.5'), Decimal('0.5'), Decimal('2.5')] -> info de la clase n
table_info[n][0] # 'A' -> Letra de la clase
table_info[n][1] # '1' -> Limite Inferior
table_info[n][2] # '2.0' -> Límite Superior
table_info[n][3] # '2' -> Frecuencia
table_info[n][4] # '1.5' -> Marca de la clase
table_info[n][5] # '0.5' -> Limite Inferior Exacto
table_info[n][6] # '2.5' -> Límite Superior Exacto

drawTable()

Presenta los resultados de la función calculateFrecuencyByDataList().

Ejemplo de uso:

import PyE_tools as pye
from decimal import Decimal

data = [1, 2, 3, 4, 5, 6]
numero_de_clases = 4
amplitud = Decimal(2)
unidad_de_variacion = Decimal(1.0)

table_info = pye.calculateFrecuencyByDataList(data, numero_de_clases, amplitud, unidad_de_variacion)

drawTable(table_info)

Salida:

Clase   Límite Inf.    Límite Sup.    Frec.     Marca d Clases      Lim Inf Exac      Lim Sup Exac
---     ---            ---            ---       ---                 ---               ---
A       1              2.0            2         1.5                 0.5               2.5
B       3.0            4.0            2         3.5                 2.5               4.5
C       5.0            6.0            2         5.5                 4.5               6.5
D       7.0            8.0            0         7.5                 6.5               8.5

About

Modulo chido para no escribir tanto en probabilidad y estadística

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published