%pylab inline
#Importamos las librerías utilizadas
import numpy as np
import pandas as pd
import seaborn as sns

#Mostramos las versiones usadas de cada librerías
print ("Numpy v{}".format(np.__version__))
print ("Pandas v{}".format(pd.__version__))
print ("Seaborn v{}".format(sns.__version__))

#Abrimos los ficheros con los datos
conclusiones = pd.read_csv('Conclusiones.csv')

columns=['bq','formfutura','filastruder']

#Mostramos un resumen de los datos obtenidoss
conclusiones[columns].describe()

"""
Explanation: Análisis de los datos obtenidos
Compararación de tres filamentos distintos

Filamento de BQ
Filamento de formfutura
Filamento de filastriuder
End of explanation
"""


conclusiones[columns].plot(figsize=(16,10),ylim=(1.5,2.5)).hlines([1.85,1.65],0,3500,colors='r')
#datos['RPM TRAC'].plot(secondary_y='RPM TRAC')

conclusiones[columns].boxplot(return_type='axes')

"""
Explanation: Representamos ambos diámetro y la velocidad de la tractora en la misma gráfica
End of explanation
"""


datos_filtrados = datos[(datos['Diametro X'] >= 0.9) & (datos['Diametro Y'] >= 0.9)]

#datos_filtrados.ix[:, "Diametro X":"Diametro Y"].boxplot(return_type='axes')

"""
Explanation: Aumentando la velocidad se ha conseguido que disminuya el valor máxima, sin embargo ha disminuido el valor mínimo. Para la siguiente iteracción, se va a volver a las velocidades de 1.5- 3.4 y se van a añadir más reglas con unos incrementos de velocidades menores, para evitar saturar la velocidad de traccción tanto a nivel alto como nivel bajo.
Comparativa de Diametro X frente a Diametro Y para ver el ratio del filamento
Filtrado de datos
Las muestras tomadas $d_x >= 0.9$ or $d_y >= 0.9$ las asumimos como error del sensor, por ello las filtramos de las muestras tomadas.
End of explanation
"""


plt.scatter(x=datos_filtrados['Diametro X'], y=datos_filtrados['Diametro Y'], marker='.')

"""
Explanation: Representación de X/Y
End of explanation
"""


ratio = datos_filtrados['Diametro X']/datos_filtrados['Diametro Y']
ratio.describe()

rolling_mean = pd.rolling_mean(ratio, 50)
rolling_std = pd.rolling_std(ratio, 50)
rolling_mean.plot(figsize=(12,6))
# plt.fill_between(ratio, y1=rolling_mean+rolling_std, y2=rolling_mean-rolling_std, alpha=0.5)
ratio.plot(figsize=(12,6), alpha=0.6, ylim=(0.5,1.5))

"""
Explanation: Analizamos datos del ratio
End of explanation
"""


Th_u = 1.85
Th_d = 1.65

data_violations = datos[(datos['Diametro X'] > Th_u) | (datos['Diametro X'] < Th_d) |
                       (datos['Diametro Y'] > Th_u) | (datos['Diametro Y'] < Th_d)]

data_violations.describe()

data_violations.plot(subplots=True, figsize=(12,12))

"""
Explanation: Límites de calidad
Calculamos el número de veces que traspasamos unos límites de calidad. 
$Th^+ = 1.85$ and $Th^- = 1.65$
End of explanation
"""


