Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:1eval:tema05

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
Próxima revisión Ambos lados, revisión siguiente
clase:iabd:pia:1eval:tema05 [2022/01/23 16:52]
admin [Tratamiento de datos inválidos]
clase:iabd:pia:1eval:tema05 [2022/02/01 19:50]
admin [Ejercicios]
Línea 84: Línea 84:
 </sxh> </sxh>
  
-  * Cargar los datos des un fichero de texto llamado "datos.csv" cuyo separador es una coma.+  * Cargar los datos desde un fichero de texto llamado "datos.csv" cuyo separador es una coma.
  
 <sxh python> <sxh python>
Línea 90: Línea 90:
 </sxh> </sxh>
  
 +
 +<note>
 +Si al guardar los datos **NO** se añadió el parámetro ''index=False'' ,al leer el fichero se deberá añadir el parámetro ''index_col=0''
 +<sxh python>
 +df.to_csv("datos.csv")
 +df=pd.read_csv("datos.csv",index_col=0)
 +</sxh>
 +
 +</note>
  
   * Cargar los datos desde una base de datos relacional   * Cargar los datos desde una base de datos relacional
Línea 189: Línea 198:
 <sxh base> <sxh base>
        capacidad      precio        capacidad      precio
-count  31.000000   31.000000 +count  28.000000   28.000000 
-mean    3.760000  152.741935 +mean    4.092143  157.428571 
-std     5.049022  153.423807+std     5.209273  158.877178
 min     0.120000   22.000000 min     0.120000   22.000000
-25%     0.506000   50.500000 +25%     0.512000   50.750000 
-50%     1.000000   88.000000 +50%     1.750000   89.500000 
-75%     4.500000  185.000000+75%     5.250000  184.000000
 max    18.000000  612.000000 max    18.000000  612.000000
 </sxh> </sxh>
  
 +  * Media de una columna
  
-  * Correlación entre columnas+<sxh python> 
 +df.precio.mean() 
 +</sxh> 
 + 
 +<sxh base> 
 +157.42 
 +</sxh> 
 + 
 +  * Desviación estándar de una columna 
 + 
 +<sxh python> 
 +df.precio.std() 
 +</sxh> 
 + 
 +<sxh base>158.87</sxh> 
 + 
 +  * Suma de una columna  
 +  
 +<sxh python>  
 +df.precio.sum()  
 +</sxh>  
 +  
 +<sxh base>4408.0</sxh>  
 +  
 +  * Máximo de una columna  
 +  
 +<sxh python>  
 +df.precio.max()  
 +</sxh>  
 +  
 +<sxh base>612.0</sxh>  
 +  
 +  * Mínimo de una columna  
 +  
 +<sxh python>  
 +df.precio.min()  
 +</sxh>  
 +  
 +<sxh base>22.0</sxh> 
 + 
 +   * Correlación entre columnas
  
 <sxh python> <sxh python>
Línea 208: Línea 258:
 <sxh base> <sxh base>
            capacidad    precio            capacidad    precio
-capacidad   1.000000  0.949407 +capacidad   1.000000  0.962542 
-precio      0.949407  1.000000+precio      0.962542  1.000000
 </sxh> </sxh>
  
Línea 338: Línea 388:
 </sxh> </sxh>
  
-  * Añadir una columna calculada+  * Añadir una nueva columna calculada
  
 <sxh python> <sxh python>
Línea 352: Línea 402:
 4  SSD       1.00      86      86.00 4  SSD       1.00      86      86.00
 ........... ...........
 +</sxh>
 +
 +  * Modificar una columna
 +
 +<sxh python>
 +#Pasamos de euros a dolares
 +df.precio=df.precio*1.13
 </sxh> </sxh>
  
Línea 388: Línea 445:
 </sxh> </sxh>
  
-===== Tratamiento de datos inválidos =====+===== Datos inválidos =====
 Vamos ahora a crear un DataFrame con datos inválidos. Vamos ahora a crear un DataFrame con datos inválidos.
  
Línea 495: Línea 552:
 {{ :clase:iabd:pia:1eval:pairplot.png?direct |}} {{ :clase:iabd:pia:1eval:pairplot.png?direct |}}
  
 +===== Ejercicios =====
  
-===== pandas_profiling ==== +==== Ejercicio 1.A ==== 
-Genera un HTML con información del DataFrame+Crea un DataDrame con los datos que proporciona ''load_iris''. Recuerda que la propiedad ''feature_names'' retorna los nombres. La columna de los  tipos de flor la debes llamar ''tipo_flor''
  
-<sxh python> 
-from pandas_profiling import ProfileReport 
-reporte = ProfileReport(df, title = "Mi reporte") 
-reporte.to_file("reporte.html") 
-</sxh> 
  
-Se puede ver el resultado en [[http://logongas.es/pandas_profiling.html|pandas_profiling.html]]+  * Grábalo a disco y mira el fichero resultante 
 +    * Ahora prueba a cargarlo 
 +  * Grábalo a disco con otro nombre pero ahora sin el parámetro ''index=False'' y mira la diferencia con el anterior fichero. 
 +    * Ahora prueba a cargarlo 
 +  * Muestra el nombre de las columnas y los tipos de datos de cada una de ellas. 
 +  * Imprime por pantalla "El nº de número de características es: NNNNN y el número de muestras es: NNNNNN" 
 +  * Imprime por pantalla las primeras filas 
 +  * Imprime por pantalla las últimas filas 
 +  * ¿Cuando ocupa en memoria el DataFrame?
  
-[[http://logongas.es/pandas_profiling.html|{{:clase:iabd:pia:1eval:pandas_profiling.png|}}]]+==== Ejercicio 1.B ==== 
 +Siguiendo con el DataFrame anterior imprime por pantalla:
  
-<note tip>Una herramienta similar pero mucho mas potente es [[https://taknev83.github.io/pywedge-docs/|pywedge]]. Mas información en [[https://towardsdatascience.com/automated-interactive-package-for-eda-modeling-and-hyperparameter-tuning-in-a-few-lines-of-228c561fa63c|Automated Interactive Package for EDA, Modeling, and Hyperparameter Tuning in a few lines of Python Code]] +  * El tamaño medio del ancho del pétalo 
-</note>+  * La desviación del ancho del pétalo 
 +  * El máximo ancho del pétalo 
 +  * El mínimo ancho del pétalo 
 + 
 +==== Ejercicio 1.C ==== 
 +Siguiendo con el DataFrame anterior: 
 + 
 +  * Imprime por pantalla el nombre de las columnas como un array 
 +  * Imprime por pantalla el nombre de la primera columna 
 +  * Imprime por pantalla el número de columnas que hay. 
 +  * Cambia el nombre de la columna "tipo_flor" por el de "target" 
 +  * Mueve la columna "target" al final del DataFrame 
 +  * Inserta una nueva columna que sea el área del pétalo. Deberás insertarla antes de la última columna. 
 +  * Inserta una nueva columna que sea el área del sépalo. Deberás insertarla antes de la última columna. 
 + 
 + 
 +==== Ejercicio 1.D ==== 
 +Siguiendo con el DataFrame anterior imprime por pantalla: 
 + 
 +  * El ancho del pétalo de las flores de tipo "0" pero cuyo largo del pétalo sea entre [1.3,1.9]  
 +  * El ancho del sépalo de las flores de tipo "1" 
 +  * Indica los tipos de flores que hay. 
 +  * Indica cuantos valores de la columna "target" son "null" 
 +  * Indicar cuantos valores del DataFrame son "null" 
 +  * ¿Como se borrarían aquellas filas que tienen algún datos que es null? 
 + 
 +==== Ejercicio 1.E ==== 
 +Siguiendo con el DataFrame anterior y usando [[https://seaborn.pydata.org/|Seaborn]]
 +  * Muestra un scatter plot del ancho del pétalo en el eje X y el ancho del sépalo en el eje Y según el tipo de flor. 
 +  * Muestra el gráfico KDE de la distribución del largo del pétalo y del largo del sépalo. 
 +  * Muestra el gráfico KDE de la distribución del largo del pétalo y del largo del sépalo pero separado por el tipo de flor. 
 +  * Muestra un //pairplot// 
 + 
 +==== Ejercicio 2.A ==== 
 +Descarga el siguiente fichero {{ :clase:iabd:pia:1eval:tiempos_red_neuronal.csv |}} que contiene los segundos que ha tardado en entrenarse una red neuronal según el nº de épocas y la función de activación usada 
 + 
 +  * Abre el fichero con un editor de texto y comprueba que formato tiene 
 +  * Carga el fichero con pandas 
 +  * Muestra las columnas que tiene 
 +  * Renombra la columna ''talla'' a ''epoca'' 
 +  * Muestra cuantas filas hay 
 +  * Muestra cuantos valores son null o NaN en cada columna 
 +  * Muestra el % de valores a null o NaN en cada columna 
 +  * Borra las filas que tengan algún valor a null o NaN 
 +  * Muestra las estadísticas de cada columna. ¿Podrías borrar alguna? ¿Explica porqué? En caso afirmativo borra la columna 
 +  * Indica que funciones de activación se han usado 
 +  * Indica hasta cuantas épocas se ha entrenado la red 
 +  * Indica la función de activación que ha tenido el mayor tiempo en la última época 
 + 
 +==== Ejercicio 2.B ==== 
 +Siguiendo con el DataFrame anterior: 
 + 
 +  * Muestra un scatter plot 
 +    * Eje X:Época 
 +    * Eje Y:Tiempo 
 +    * Separa los datos por colores según la función de activación 
 +    * Añade un título al gráfico y a los 2 ejes. 
 + 
 +¿Ves algo raro en los datos? 
 + 
 +{{:clase:iabd:pia:1eval:tiempos_red_neuronal.csv.scatter.png?direct|}} 
 + 
 +==== Ejercicio 2.C ==== 
 +Siguiendo con el DataFrame anterior: 
 + 
 +  * Haz una regresión lineal de los datos para cada tipo de activación. 
 +  * Haz un gráfico que: 
 +    * Muestre la recta de la regresión de cada función de activación. 
 +    * En la etiqueta de cada función de activación se muestre también el valor de R² para cada uno de ellos. 
 + 
 +{{:clase:iabd:pia:1eval:tiempos_red_neuronal.csv.regresion.png?direct|}} 
 + 
 + 
 +==== Ejercicio 2.D ==== 
 +Siguiendo con el DataFrame anterior: 
 + 
 +La gráfica no deja claro cda una de las rectas. Para mejorarlo se podría anotar al final de cada recta el nombre de la función de activación tal y como se muestra en el siguiente gráfico: 
 + 
 +{{:clase:iabd:pia:1eval:tiempos_red_neuronal.csv.regresion_anotado.png?direct|}} 
 + 
 +Para poner texto en una gráfica se usa el método [[https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.annotate.html|annotate]]
  
-Mas información: 
-  * [[https://medium.com/tacosdedatos/an%C3%A1lisis-exploratorio-de-datos-eda-con-pandas-profiling-cf6c19caa8aa|Análisis Exploratorio de Datos (EDA) con pandas_profiling]] 
-  * [[https://enlapasta.wordpress.com/2017/08/24/pandas-profiling-una-excelente-herramienta-para-la-exploracion-de-datos/|Pandas Profiling: Una excelente herramienta para la exploración de datos]] 
clase/iabd/pia/1eval/tema05.txt · Última modificación: 2022/02/06 21:02 por admin