Al principio del programa se debe de decidir si se quiere grabar datos nuevos a un archivo vacio llamado tabla o usar los de algun otro archivo existente.
Los datos al grabarse al archivo estaban en una sola columna, lo que hace el programa es que pasa esa columna a una linea, los espacios los cambia por comas para poder pasarlos a una lista, ya de ahi la lista se divide de acuerdo a las muestras que haya.
Para leer las lineas se empleo un el readline(), ya de ahi se hicieron los cambios como se menciono anteriormente.
from pylab import *
from tabulate import *Para leer las lineas se empleo un el readline(), ya de ahi se hicieron los cambios como se menciono anteriormente.
- Código:
from pylab import *
import os
plt.ioff()
dicc={}
plt.ioff()
lista=[]
listag=[]
listam=[]
listac=[]
rangofil=[]
promi=[]
promind=[]
proms=[]
rangoind=[]
rind=[]
datos=[]
indice=[]
#FUNCION PARA TOMAR DATOS DE CADA LINEA PARA CALCULOS
def parse_tuple(string):
try:
s = eval(str(string))
if type(s) == tuple:
return s
return
except:
return
print("""\t\tDe acuerdo con la investigación realizada respecto de datos\n
que involucran revision de calidad, dependiendo de los subgrupos manejados,\n
que en este caso seran indicados, hay una tabla de los coeficientes de A2, D3, D4,\n
por lo que ya son valores fijos, favor de verificar la tabla\n""")
A2=float(input("Ingrese el valor de A2: "))
D3=float(input("Ingrese el valor de D3: "))
D4=float(input("Ingrese el valor de D4: "))
print("\nAhora debe escoger si quiere utilizar datos de un archivo, teclear: R \no ir grabando nuevos datos a otro archivo llamado \"tabla\" y utilizarlos teclear: N")
decision=input("\n¿Quiere utilizar los datos del documento tabla?: ")
print()
#PARA GRABAR DATOS NUEVOS EN ARCHIVO TABLA
if(decision=='N'):
n=int(input("Agregue numero de muestras: "))
col=int(input("Indique el numero de subgrupos: "))
print()
#PARA EL INDICE
for w in range(n):
w=w+1
indice.append(w)
#PARA LLENADO DE MUESTRAS
archivo=open("tabla.txt","a+")
contenido=archivo.read()
archivo.seek(0)
for i in range(n):
for j in range(col):
print("Ingrese datos para la muestra %s"%str(i+1))
z=input()
archivo.write(z)
archivo.write("\n")
print()
archivo.close()
#QUITANDO SALTOS DE LINEA
fi = open("tabla.txt",'r')
cam = fi.read()
cam = cam.replace("\n"," ")
fi.close()
corregido = open("tabla.txt",'w')
corregido.write(cam)
corregido.close()
#Haciendolo lista
archivo=open("tabla.txt",'r')
linea=archivo.readline()
li=str(linea)
buscar=" "
reemplazar_por = ","
aa=li.replace(buscar, reemplazar_por)
value = parse_tuple(aa)
y=list(value)
u=np.array(y)
for p in range(len(y)):
lista.append(y[p])
listac.append(y[p])
if(len(listac)==col):
listam.append(listac)
listag.append(listam)
listam=[]
listac=[]
#RECICLANDO DATOS
elif(decision=='R'):
n=int(input("¿Cuantas muestras tiene el archivo?: "))
col=int(input("¿Cuantos subgrupos contiene?: "))
nombre=input("Nombre del archivo, con extension: ")
print()
fi = open(nombre,'r')
cam = fi.read()
cam = cam.replace("\n"," ")
fi.close()
corregido = open(nombre,'w')
corregido.write(cam)
corregido.close()
archivo=open(nombre,'r')
linea=archivo.readline()
li=str(linea)
buscar=" "
reemplazar_por = ","
aa=li.replace(buscar, reemplazar_por)
value = parse_tuple(aa)
y=list(value)
u=np.array(y)
#PARA EL INDICE
for w in range(n):
w=w+1
indice.append(w)
for p in range(len(y)):
lista.append(y[p])
listac.append(y[p])
if(len(listac)==col):
listam.append(listac)
listag.append(listam)
listam=[]
listac=[]
#PROMEDIOS Y RANGOS INDIVIDUALES
for p in range(len(y)):
promi.append(y[p])
proms.append(promi)
if(len(proms)==col):
dato2=np.array(proms)
Prom=dato2.mean()
promind.append(Prom)
proms=[]
promi=[]
rind.append(y[p])
rind.sort()
if(len(rind)==col):
rango1= rind[-1]- rind[0]
rangofil.append(rango1)
rind=[]
for t in range(n):
listag[t].append(promind[t])
listag[t].append(rangofil[t])
#LIMPIO PANTALLA
os.system('cls')
#TABLA DE MUESTRAS
print(tabulate(listag,headers=["No. muestra","Lecturas","PROM","RAN",], showindex=indice,tablefmt='fancy_grid'))
#PROMEDIO Y RANGOGENERAL
promgeneral=u.mean()
rangogeneral=np.array(rangofil)
rangogeneral=rangogeneral.mean()
#FORMULAS
LCIX=promgeneral-(A2*rangogeneral)
LCIR=D3*rangogeneral
LCSX=promgeneral+(A2*rangogeneral)
LCSR=D4*rangogeneral
#MINI TABLA
dicc2={'M1':['PROM','LCI','LCS'],'M2':[[promgeneral,rangogeneral],[LCIX,LCIR],[LCSX,LCSR]],}
print()
print(tabulate(dicc2,headers=[" "," De Prom ind / De Rang ind"], tablefmt='simple'))
#LCIX
y1=[]
y1.append(LCIX)
y1=(y1) *n
y1=np.array(y1)
#LCSX
y2=[]
y2.append(LCSX)
y2=(y2) *n
y2=np.array(y2)
#LCIR
y3=[]
y3.append(LCIR)
y3=(y3) *n
y3=np.array(y3)
#LCSR
y4=[]
y4.append(LCSR)
y4=(y4) *n
y4=np.array(y4)
#PARA GRAFICAR PROMEDIO GENERAL
y8=[]
y8.append(promgeneral)
y8=(y8) *n
y8=np.array(y8)
#PARA GRAFICAR RANGO GENERAL
y9=[]
y9.append(rangogeneral)
y9=(y9) *n
y9=np.array(y9)
plt.subplot(1,2,1)
#PARTE DE LAS X
plt.plot(y1, label="LCI", marker='^', linestyle=':', color='b')
plt.plot(y2, label="LCS", marker='p', linestyle=':', color='g')
plt.plot(y8, label="X", marker='x', linestyle='-', color='r')
plt.plot(promind, label="PROM", marker='o', linestyle='-', color='c')
plt.legend(loc="upper right")
plt.title("GRAFICA PARA LOS PROMEDIOS")
plt.xlabel("Muestras\n(la muestra 0 representa a la muestra 1 y asi sucesivamente)")
plt.ylabel("Lecturas")
plt.grid(True)
plt.subplot(1,2,2)
#PARTE DE LAS R
plt.plot(y3, label="LCI", marker='h', linestyle='--', color='m')
plt.plot(y4, label="LCS", marker='+', linestyle='--', color='y')
plt.plot(y9, label="X", marker='*', linestyle='-', color='k')
plt.plot(rangofil, label="PROM", marker='D', linestyle='-', color='b')
plt.title("GRAFICA PARA LOS RANGOS")
plt.xlabel("Muestras\n(la muestra 0 representa a la muestra 1 y asi sucesivamente)")
plt.ylabel("Rangos")
plt.legend(loc="upper right")
plt.grid(True)
plt.show()
plt.ion()
archivo.close()
- Ejecución:
No hay comentarios:
Publicar un comentario