sábado, 18 de diciembre de 2010

estadisticas-stats + python

#Cree una función donde me retorne datos estadísticos,existe un modulo stats en python pero no tenia para la desviación estándar ponderada(pesada). Espero que les ayude y se diviertan


def stats(list_d,list_w):

    if type(list_d) and type(list_w) is list :

        lnd = len(list_d)
        lnw = len(list_w)

        if lnd == lnw and lnd > 0 :
          
            list_dxw = [list_d[i]*list_w[i] for i in xrange(len(list_d))]
            weimean = sum(list_dxw)/sum(list_w)
            list_rdw = [list_w[i]*((list_d[i] -weimean)**2) for i in xrange(lnd)]
            weistdev = ((sum(list_rdw))/(sum(list_w)))**0.5
            min_ = min(list_d)
            max_ = max(list_d)
            samnum = len(list_d)
            coefvar = weistdev/weimean
          
          
            return weimean, weistdev, min_, max_, samnum, coefvar

script python-excel

#Como trabajar más fasíl aun con python-excel me pregunte y cree una función que me facilita a escribir celdas en columnas y en filas.Espero que les ayude y se diviertan.


from xlwt import *

#Estilo de la celda
borders = Borders()
borders.left = 1
borders.right = 1
borders.top = 1
borders.bottom = 1
estilo_bordes_ = XFStyle()
estilo_bordes_.borders = borders

#Esta funcion crea bordes de tablas en columnas
def coltable(sheet,row,col,data_lists):
 
    #Todas las lista a escribir en columnas
    for e in xrange(len(data_lists)):
        #Escribiendo cada elemento de la lista a una celda
        for i in xrange(len(data_lists[e])):
          
            data_list=data_lists[e]
            sheet.write(row +i,col+e,data_list[i],estilo_bordes_)

                
#Esta funcion crea bordes de tablas en filas
def rowtable(sheet,row,col,data_lists):

    #Todas las lista a escribir en filas
    for e in xrange(len(data_lists)):
        #Escribiendo cada elemento de la lista a una celda
        for i in xrange(len(data_lists[e])):
  
            data_list=data_lists[e]
            sheet.write(row +e,col+i,data_list[i],estilo_bordes_)
  

#Esta funcion crea bordes de tablas en columnas y en filas
def table(sheet,row_init,col_init,data_lists,formation):
 
    #Todas las lista a escribir
    for e in xrange(len(data_lists)):
        #Escribiendo cada elemento de la lista a una celda
        for i in xrange(len(data_lists[e])):
          
            data_list=data_lists[e]
            if formation == 'col':
                sheet.write(row_init +i,col_init+e,data_list[i],estilo_bordes_)
            elif formation == 'row':
                sheet.write(row_init +e,col_init+i,data_list[i],estilo_bordes_)