Proyecto. Leyendo y grabando datos a un archivo

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.

  • Código:

from pylab import *
from tabulate 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

Ultima entrada ingresada

SISTEMA DE RIEGO AUTOMÁTICO CON MÚSICA

El objetivo era hacer un programa que pueda activar una bomba de agua en la noche, y que por las mañanas reproduzca música para las plantas....