Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: XD YO en 13 Marzo 2010, 02:08 AM

Título: Código que calcula Promedio Varianza y Desviación estándar (Python)
Publicado por: XD YO en 13 Marzo 2010, 02:08 AM
Buenas tardes.

Como no tenia nada mejor que hacer, solo grabarme algunas formulas de estadística, decidí crear un código en Python para realizar esos tres cálculos (Promedio Varianza y Desviación estándar), solo introduciendo los números separándolos por una coma

El código es el siguiente:
Código (python) [Seleccionar]

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
######Este es un "corto" programa para
######Calcular promedio; varianza y desviación estándar
######################################
def _promedio():
    vcdda = cadenadedatos.get()
    vforlis = "["+vcdda+"]" ###esto me crea una cadena para formar mi lista
    lista = eval(vforlis) #esto trasforma mi cadena en lista
    A = len(lista)
    suma=0
    if A>1:
        for i in lista:
            suma += i
        p = ((suma+0.0)/(A+0.0))
        vpp = Label(ventana, text="El promedio es de=\n"+str(p), justify=CENTER)
        vpp.grid(row=3, column=2,)
    else:
        tkMessageBox.showerror("Datos insuficientes", "No han sido incluidos suficientes datos como para realizar el promedio.\nIntrodusca más datos; gracias")
######################################
def _varianza():
    vcdda = cadenadedatos.get()
    vforlis = "["+vcdda+"]" ###esto me crea una cadena para formar mi lista
    lista = eval(vforlis) #esto trasforma mi cadena en lista
    lista2 = []
    A = len(lista)
    suma=0
    varis=0
    if A>1:
        for i in lista:
            suma += i
        p = ((suma+0.0)/(A+0.0))
        for j in range((A)):
            sumat = (lista[j]-p)**2
            lista2.append(sumat)
        for k in lista2:
            varis += k
        vari = varis
        va = ((vari+0.0)/(A+0.0))
        vp = Label(ventana, text="La varianza es de=\n"+str(va), justify=CENTER)
        vp.grid(row=4, column=2,)
    else:
        tkMessageBox.showerror("Datos insuficientes", "No han sido incluidos suficientes datos como para realizar la varianza.\nIntrodusca más datos; gracias")
###########################
def _desest():
    vcdda = cadenadedatos.get()
    vforlis = "["+vcdda+"]" ###esto me crea una cadena para formar mi lista
    lista = eval(vforlis) #esto trasforma mi cadena en lista
    lista2 = []
    A = len(lista)
    suma=0
    varis=0
    if A>1:
        for i in lista:
            suma += i
        p = ((suma+0.0)/(A+0.0))
        for j in range((A)):
             sumat = (lista[j]-p)**2
            lista2.append(sumat)
        for k in lista2:
            varis += k
        vari = varis
        va = sqrt((vari+0.0)/(A+0.0))
        vb = Label(ventana, text="La desviacion estandar es de=\n"+str(va), justify=CENTER)
        vb.grid(row=5, column=2,)
    else:
        tkMessageBox.showerror("Datos insuficientes", "No han sido incluidos suficientes datos como para realizar la desviación estándar.\n introduzca más datos; gracias")
####################
from math import*
from Tkinter import*
import tkMessageBox


ventana = Tk()
ventana.title("Cálculos estadísticos básicos")
####Definiendo algunas variables###
cadenadedatos = StringVar()
li = "Introduzca datos separándolos con una coma\nluego, pulse el botón del calculo a realizar\nGracias."
oA="Promedio"
oB="Varianza"
oC="Desviación\nEstándar"
#####Elementos de ventana####
ll = Label(ventana, text=li)
eli = Entry(ventana, textvariable=cadenadedatos, xscrollcommand=5)
b1 = Button(ventana, text=oA, command=_promedio)
b2 = Button(ventana, text=oB, command=_varianza)
b3 = Button(ventana, text=oC, command=_desest)
#### Conlocandolos en la grilla######
ll.grid(row=0, column=1, columnspan=3)
eli.grid(row=1, column=2)
b1.grid(row=2, column=1)
b2.grid(row=2, column=2)
b3.grid(row=2, column=3)
ventana.mainloop()


Y aquí unas vistas del programa:
(http://mzgy4a.bay.livefilestore.com/y1pq8ktmfGMmIOfC_Mh9T3eBlHn6GNveCqkk_DZLS-UnbD69piBWhkxLK7htyUIM2XHDM8KClIibPXcYCe_wkke4VprJ_TGwqU0/2C%C3%A1lculos_estad%C3%ADsticos_b%C3%A1sicos.png)(http://mzgy4a.bay.livefilestore.com/y1pKtBp4-tHWQsMp_bm5Ze4Gpxu8PsOfJL1WndLydgidBmNGMG3LWFG6QM1BaTDsKi4N-lcPpZCwGJGTA8G8ndM6fUti8m-MwXA/C%C3%A1lculos_estad%C3%ADsticos_b%C3%A1sicos.png)
Se aceptan sugerencias.  :D