Powered By Blogger

miércoles, 15 de noviembre de 2023

MODULO III: ANALISIS de DATOS con PYTHON y ASISTENTES INTELIGENTES

 I.  ASPECTO TEORICO CONCEPTUAL

DEL ANALISIS DE DATOS

Ver ChatGPT 3.5 https://chat.openai.com/c/aa57f253-7fbd-4598-b9d6-2a1cb4196a42

1.1. INTRODUCCION AL ANALISIS DE DATOS con PYTHON


1.1.1. El Análisis de Datos


El análisis de datos es el proceso de inspeccionar, limpiar y modelar datos con el objetivo de descubrir información útil, llegar a conclusiones y respaldar la toma de decisiones. Se realiza utilizando diversas técnicas y herramientas, y puede aplicarse a conjuntos de datos grandes o pequeños. Aquí hay algunos aspectos clave del análisis de datos:


1. Recopilación de datos: Este es el primer paso, que implica la recolección de datos de diversas fuentes, como bases de datos, encuestas, sensores, registros y más.

2. Limpieza de datos: Los datos pueden contener errores, valores atípicos y otros problemas. La limpieza de datos implica la identificación y corrección de estos problemas para garantizar la calidad de los datos.

3. Exploración de datos: En esta etapa, se utilizan herramientas estadísticas y visuales para comprender la estructura y las características de los datos. Esto puede incluir la identificación de tendencias, patrones y relaciones.

4. Análisis descriptivo: Se realiza para describir y resumir las principales características del conjunto de datos. Esto implica el cálculo de medidas estadísticas como la media, la mediana, la desviación estándar, entre otras.

5. Análisis exploratorio de datos (EDA): Este tipo de análisis se centra en descubrir patrones, relaciones o tendencias más profundas en los datos. Puede incluir técnicas avanzadas de visualización y modelado estadístico.

6. Análisis predictivo: Se utiliza para hacer predicciones sobre eventos futuros. Esto implica el uso de modelos estadísticos y algoritmos de aprendizaje automático para identificar patrones que puedan predecir resultados futuros.

7. Análisis prescriptivo: Va más allá de predecir y sugiere acciones o decisiones específicas que pueden tomarse para alcanzar ciertos objetivos.

8. Toma de decisiones: Los resultados del análisis de datos se utilizan para respaldar la toma de decisiones informadas. Esto puede aplicarse en una variedad de campos, como negocios, ciencia, salud, gobierno, entre otros.

Conclusión: El análisis de datos es una parte fundamental en la era de la información, donde grandes cantidades de datos están disponibles, y su comprensión adecuada puede proporcionar valiosas ideas y ventajas competitivas.

1.1.2. Librerias de Python para el Análisis de Datos




Python es uno de los lenguajes de programación más utilizados en el análisis de datos, y cuenta con varias bibliotecas poderosas que facilitan este proceso. Aquí hay algunas de las bibliotecas más populares para el análisis de datos en Python:

1. **NumPy:** Esencial para computación numérica en Python. Proporciona un objeto de matriz multidimensional (ndarray) que facilita las operaciones matriciales y aritméticas en grandes conjuntos de datos.

   - [NumPy](https://numpy.org/)

2. **Pandas:** Ofrece estructuras de datos flexibles y herramientas de manipulación de datos diseñadas para facilitar la limpieza y exploración de datos.


3. **Matplotlib:** Una biblioteca de visualización que permite crear gráficos estáticos, gráficos interactivos y otros tipos de visualizaciones para explorar y comunicar datos.

   - [Matplotlib](https://matplotlib.org/)

4. **Seaborn:** Basado en Matplotlib, Seaborn proporciona una interfaz de alto nivel para crear atractivas y informativas visualizaciones estadísticas.

   - [Seaborn](https://seaborn.pydata.org/)

5. **Scikit-learn:** Es una biblioteca de aprendizaje automático que incluye herramientas para la clasificación, regresión, clustering, reducción de dimensionalidad y más.

   - [Scikit-learn](https://scikit-learn.org/)

6. **Statsmodels:** Ofrece modelos estadísticos y pruebas estadísticas para explorar relaciones en los datos.

   - [Statsmodels](https://www.statsmodels.org/)

7. **SciPy:** Construida sobre NumPy, SciPy proporciona funcionalidades adicionales para la optimización, álgebra lineal, integración, interpolación, funciones especiales y más.

   - [SciPy](https://www.scipy.org/)

8. **TensorFlow y PyTorch:** Bibliotecas de aprendizaje profundo que son fundamentales para tareas de inteligencia artificial y análisis de datos complejos.

   - [TensorFlow](https://www.tensorflow.org/)
   - [PyTorch](https://pytorch.org/)

Conclusión: Estas bibliotecas forman la base de un amplio espectro de análisis de datos y proyectos de ciencia de datos en Python. La elección de las bibliotecas depende de las necesidades específicas de tu proyecto y de tu familiaridad con cada una de ellas.

1.1.3. Importancia del Análisis de Datos en la Educación Superior



El análisis de datos en la educación superior es de suma importancia, ya que proporciona información valiosa que puede mejorar la calidad de la enseñanza, el aprendizaje y la gestión institucional. Algunas de las razones fundamentales para la importancia del análisis de datos en la educación superior son:

1. **Mejora del Rendimiento Académico:** El análisis de datos permite evaluar el rendimiento académico de los estudiantes a través de diversas métricas. Esto incluye la identificación de áreas de éxito y desafíos, lo que permite a los educadores ajustar estrategias pedagógicas para mejorar la retención y el éxito académico.

2. **Personalización del Aprendizaje:** Al analizar datos sobre el rendimiento individual de los estudiantes, se pueden diseñar enfoques de aprendizaje más personalizados. Esto ayuda a adaptar los materiales y métodos de enseñanza para satisfacer las necesidades específicas de cada estudiante.

3. **Toma de Decisiones Institucionales:** Los análisis de datos ofrecen a las instituciones de educación superior información clave para la toma de decisiones estratégicas. Esto puede incluir la planificación de programas académicos, la asignación de recursos, la expansión de instalaciones y la mejora de la calidad educativa.

4. **Retención Estudiantil:** Identificar patrones y factores que afectan la retención estudiantil es crucial. El análisis de datos puede ayudar a prever problemas y aplicar intervenciones tempranas para mejorar las tasas de retención.

5. **Evaluación del Desempeño Docente:** El análisis de datos permite evaluar el rendimiento de los profesores en función de los resultados académicos de sus estudiantes. Esto puede utilizarse para brindar retroalimentación constructiva y apoyo profesional.

6. **Eficiencia Operativa:** Las instituciones pueden mejorar la eficiencia operativa al analizar datos relacionados con la gestión de recursos, la distribución del tiempo de los profesores y la utilización de instalaciones.

7. **Planificación Estratégica:** Al examinar tendencias a largo plazo, las instituciones pueden desarrollar estrategias y políticas a largo plazo para adaptarse a las cambiantes necesidades educativas y sociales.

8. **Evaluación de Programas Académicos:** El análisis de datos puede ayudar a evaluar la efectividad de los programas académicos y a realizar ajustes para satisfacer mejor las demandas del mercado laboral y las expectativas de los estudiantes.

Conclusión:, el análisis de datos en la educación superior es esencial para promover la eficiencia, la calidad y la adaptabilidad en un entorno educativo en constante cambio. Proporciona a educadores, administradores y responsables de políticas las herramientas necesarias para tomar decisiones informadas que beneficien a estudiantes y a la institución en su conjunto.


     II.  ASPECTO PROCEDIMENTAL                   DEL ANALISIS DE DATOS 


                        

2.1. Caracteristicas de los Datos

Para realizar análisis de datos en Python, es esencial comprender las características de los datos con los que estás trabajando. Aquí hay algunas características clave que puedes considerar:

1. **Tipo de Datos:**
   - **Numéricos:** Datos que representan números. Pueden ser enteros o decimales.
   - **Categóricos:** Datos que representan categorías o etiquetas. Pueden ser nominales (sin orden) o ordinales (con un orden específico).
   - **Texto:** Datos que representan cadenas de texto.

2. **Estructura de Datos:**
   - **Series:** Una sola columna de datos.
   - **DataFrames:** Estructuras bidimensionales que contienen múltiples columnas, similar a una hoja de cálculo.

3. **Valores Faltantes:**
   - Identificar y manejar los valores faltantes es crucial. Puedes eliminar las filas/columnas con valores faltantes o imputar valores utilizando técnicas como la media, la mediana o la interpolación.

4. **Distribución de Datos:**
   - Visualizar la distribución de los datos te ayuda a entender su forma. Puedes utilizar histogramas, gráficos de caja y gráficos de densidad para este propósito.

5. **Estadísticas Descriptivas:**
   - Utiliza funciones como `mean()`, `median()`, `std()`, `min()`, `max()` para obtener estadísticas descriptivas básicas.

6. **Outliers:**
   - Identifica y maneja los valores atípicos que pueden afectar la calidad del análisis. Puedes usar métodos estadísticos o gráficos de caja para identificarlos.

7. **Correlación:**
   - Analiza la relación entre variables utilizando coeficientes de correlación como Pearson o Spearman.

8. **Transformaciones de Datos:**
   - Aplica transformaciones como logaritmos o normalización para ajustar la distribución de los datos, según sea necesario.

9. **Visualización:**
   - Utiliza bibliotecas como Matplotlib y Seaborn para crear gráficos que te ayuden a comprender mejor los datos.

10. **Manipulación de Fechas y Tiempo:**
    - Si tus datos contienen información de fechas y horas, familiarízate con las funciones y métodos para manipular y analizar este tipo de datos.

11. **Conjuntos de Datos Grandes:**
    - Considera la eficiencia computacional, especialmente si estás trabajando con grandes conjuntos de datos. Pandas y NumPy ofrecen funcionalidades optimizadas para este propósito.

Conclusión: Estos son solo algunos aspectos clave. Dependiendo de tu conjunto de datos y los objetivos específicos del análisis, es posible que necesites abordar otras características también. Python ofrece muchas bibliotecas como Pandas, NumPy, Matplotlib y Seaborn que facilitan la manipulación y análisis de datos.

2.1.1. Ejemplo numérico 1 (para un caso de 30 estudiantes de la materia de Zootecnia)

Supongamos que tenemos información sobre las calificaciones obtenidas por los estudiantes en dos exámenes (Examen 1 y Examen 2) y queremos realizar un análisis básico de estos datos.

Primero, generemos algunos datos de ejemplo utilizando la biblioteca NumPy y luego utilicemos Pandas para realizar el análisis.

import numpy as np import pandas as pd # Establecemos una semilla para reproducibilidad np.random.seed(42) # Generamos datos de ejemplo para 30 estudiantes en dos exámenes data = { 'Estudiante': np.arange(1, 31), 'Examen_1': np.random.randint(50, 100, size=30), 'Examen_2': np.random.randint(50, 100, size=30)} # Creamos un DataFrame con los datos df = pd.DataFrame(data) # Visualizamos los primeros registros del DataFrame print(df.head())

En este ejemplo, hemos creado un DataFrame con tres columnas: 'Estudiante', 'Examen_1' y 'Examen_2'. Cada estudiante tiene calificaciones aleatorias en el rango de 50 a 100 en ambos exámenes.

         Estudiante Examen_1 Examen_2
   1     88      76
2     78      91
3     64      77
4     92     65
5     57      64

Ahora, hagamos un análisis básico de estos datos:

# Estadísticas descriptivas descripcion = df.describe() # Correlación entre las calificaciones de los dos exámenes correlacion = df['Examen_1'].corr(df['Examen_2']) # Visualización de las calificaciones en un gráfico de dispersión import matplotlib.pyplot as plt import seaborn as sns plt.figure(figsize=(8, 6)) sns.scatterplot(x='Examen_1', y='Examen_2', data=df) plt.title('Gráfico de Dispersión entre Examen 1 y Examen 2') plt.xlabel('Calificaciones en Examen 1') plt.ylabel('Calificaciones en Examen 2') plt.show() # Visualización de las distribuciones de las calificaciones en ambos exámenes plt.figure(figsize=(12, 5)) plt.subplot(1, 2, 1) sns.histplot(df['Examen_1'], bins=10, kde=True, color='blue') plt.title('Distribución de Calificaciones en Examen 1') plt.subplot(1, 2, 2) sns.histplot(df['Examen_2'], bins=10, kde=True, color='green') plt.title('Distribución de Calificaciones en Examen 2') plt.tight_layout() plt.show() # Análisis de outliers utilizando un gráfico de caja plt.figure(figsize=(8, 6)) sns.boxplot(data=df[['Examen_1', 'Examen_2']]) plt.title('Gráfico de Caja para Calificaciones en Examen 1 y Examen 2') plt.show() print("Estadísticas descriptivas:") print(descripcion) print("\nCorrelación entre Examen 1 y Examen 2:", correlacion)

















Conclusión: En este ejemplo, hemos utilizado las bibliotecas Matplotlib y Seaborn para visualizar las calificaciones en un gráfico de dispersión, las distribuciones de calificaciones en ambos exámenes y un gráfico de caja para identificar posibles outliers. Además, calculamos estadísticas descriptivas y la correlación entre las calificaciones de los dos exámenes. Este es un análisis básico, y dependiendo de los objetivos específicos, podrías realizar análisis más avanzados o aplicar técnicas específicas de Zootecnia en tu conjunto de datos.

2.1.2. Ejemplo numérico 2 (para un curso en linea de 30 estudiantes en la msima asignatura)

Vamos a crear un ejemplo para un curso en línea de Zootecnia con 30 participantes, donde las puntuaciones se dividen en cuatro categorías: asistencia, foros de discusión, trabajos y cuestionarios. La nota de aprobación será de 65 puntos.

import numpy as np import pandas as pd # Establecemos una semilla para reproducibilidad np.random.seed(123) # Generamos datos de ejemplo para 30 participantes en diferentes categorías data = { 'Participante': np.arange(1, 31), 'Asistencia': np.random.randint(0, 11, size=30), 'Foros': np.random.randint(0, 21, size=30), 'Trabajos': np.random.randint(0, 41, size=30), 'Cuestionario': np.random.randint(0, 31, size=30) } # Creamos un DataFrame con los datos df_curso_en_linea = pd.DataFrame(data) # Calculamos la puntuación total para cada participante df_curso_en_linea['Puntuacion_Total'] = ( df_curso_en_linea['Asistencia'] + df_curso_en_linea['Foros'] + df_curso_en_linea['Trabajos'] + df_curso_en_linea['Cuestionario']) # Evaluamos si cada participante aprueba o no (puntuación >= 65) df_curso_en_linea['Aprobado'] = df_curso_en_linea['Puntuacion_Total'] >= 65 # Visualizamos los primeros registros del DataFrame print(df_curso_en_linea.head())

Participante  Asistencia  Foros  Trabajos  Cuestionario  Puntuacion_Total
0             1           2      7        39            25              73   
1             2           2      9        11             6              28   
2             3           6      3         7            12              28   
3             4           1     20         1            22              44   
4             5           3      6        37            27              73  

   Aprobado  
    0      True  
    1     False  
    2     False  
    3     False  
    4      True  

En este ejemplo, cada participante tiene puntuaciones aleatorias en las categorías de asistencia, foros de discusión, trabajos y cuestionarios, con un máximo de puntos para cada categoría según las especificaciones dadas.

Además, hemos calculado la puntuación total sumando las puntuaciones en todas las categorías. Luego, hemos evaluado si cada participante ha aprobado o no el curso basándonos en la condición de que la puntuación total sea igual o superior a 65.

Conclusión: Este es un ejemplo básico, y se puede expandir según las necesidades específicas del análisis. Se podria agregar más detalles sobre los criterios de evaluación, incluir pesos diferentes para cada categoría, o realizar análisis estadísticos adicionales según los objetivos.

El codigo desarrollado para las gráficas es la siguiente:

import matplotlib.pyplot as plt import seaborn as sns # Gráfico de barras para las puntuaciones en cada categoría plt.figure(figsize=(12, 8)) plt.subplot(2, 2, 1) sns.barplot(x='Participante', y='Asistencia', data=df_curso_en_linea) plt.title('Puntuación de Asistencia') plt.subplot(2, 2, 2) sns.barplot(x='Participante', y='Foros', data=df_curso_en_linea) plt.title('Puntuación de Foros de Discusión') plt.subplot(2, 2, 3) sns.barplot(x='Participante', y='Trabajos', data=df_curso_en_linea) plt.title('Puntuación de Trabajos') plt.subplot(2, 2, 4) sns.barplot(x='Participante', y='Cuestionario', data=df_curso_en_linea) plt.title('Puntuación de Cuestionario') plt.tight_layout() plt.show() # Gráfico de dispersión para la puntuación total y la aprobación plt.figure(figsize=(10, 6)) sns.scatterplot(x='Puntuacion_Total', y='Aprobado', data=df_curso_en_linea, hue='Aprobado') plt.title('Relación entre Puntuación Total y Aprobación') plt.xlabel('Puntuación Total') plt.ylabel('Aprobado') plt.show()



En estos gráficos:

  • Los gráficos de barras muestran las puntuaciones de cada participante en las categorías de asistencia, foros de discusión, trabajos y cuestionarios. Cada participante está representado en el eje x, y la altura de las barras muestra sus puntuaciones en cada categoría.


  • El gráfico de dispersión muestra la relación entre la puntuación total y la aprobación. Los puntos se colorearon según si el participante aprobó o no. Puedes observar la distribución de los participantes según su puntuación total y su estado de aprobación.

Conclusión: Estos son ejemplos básicos y se puede personalizar los gráficos según las preferencias y necesidades específicas.



 III.  ASPECTO PRACTICO DEL ANALISIS DE DATOS 

3.1. Generar Datos

3.1.1. Estudio de Caso 1. (Evaluacion de 30 estudiantes de la materia de Zootecnia)


Ver JupyterLab 

DataSet (archivo de Excel en CSV)
Este conjunto de datos incluye información básica sobre los estudiantes y algunas calificaciones hipotéticas:

| Estudiante | Edad | Género | Asistencia (%) | Examen Parcial 1 | Examen Parcial 2 | Proyecto Final | Calificación Final | |------------|------|--------|-----------------|------------------|------------------|-----------------|---------------------| | 1 | 20 | M | 95 | 85 | 78 | 90 | 85.5 | | 2 | 21 | F | 90 | 75 | 80 | 88 | 82.0 | | 3 | 22 | M | 98 | 88 | 92 | 85 | 90.0 | | 4 | 20 | F | 92 | 80 | 85 | 92 | 87.5 | | 5 | 23 | M | 85 | 92 | 78 | 85 | 82.5 | | 6 | 21 | F | 96 | 85 | 90 | 88 | 89.0 | | 7 | 22 | M | 93 | 88 | 85 | 90 | 88.0 | | 8 | 20 | F | 91 | 78 | 82 | 85 | 82.0 | | 9 | 23 | M | 87 | 90 | 88 | 92 | 89.0 | | 10 | 21 | F | 94 | 82 | 90 | 88 | 88.5 | | 11 | 22 | M | 89 | 88 | 85 | 90 | 87.5 | | 12 | 20 | F | 97 | 85 | 78 | 92 | 88.0 | | 13 | 23 | M | 88 | 90 | 92 | 85 | 89.0 | | 14 | 21 | F | 95 | 78 | 80 | 88 | 85.5 | | 15 | 22 | M | 92 | 88 | 85 | 90 | 88.0 | | 16 | 20 | F | 86 | 75 | 82 | 85 | 82.0 | | 17 | 23 | M | 91 | 92 | 90 | 92 | 91.0 | | 18 | 21 | F | 93 | 85 | 88 | 88 | 88.5 | | 19 | 22 | M | 97 | 90 | 85 | 90 | 90.5 | | 20 | 20 | F | 88 | 78 | 80 | 85 | 82.0 | | 21 | 23 | M | 94 | 88 | 92 | 85 | 89.5 | | 22 | 21 | F | 90 | 75 | 78 | 88 | 82.0 | | 23 | 22 | M | 96 | 90 | 85 | 90 | 90.5 | | 24 | 20 | F | 89 | 82 | 80 | 85 | 84.0 | | 25 | 23 | M | 92 | 88 | 92 | 85 | 89.0 | | 26 | 21 | F | 95 | 85 | 78 | 92 | 88.5 | | 27 | 22 | M | 91 | 90 | 85 | 90 | 89.0 | | 28 | 20 | F | 98 | 78 | 82 | 88 | 87.0 | | 29 | 23 | M | 87 | 88 | 90 | 85 | 88.0 | | 30 | 21 | F | 94 | 85 | 88 | 88 | 89.0 |

Este conjunto de datos incluye información como el número de estudiante, edad, género, porcentaje de asistencia, calificaciones de dos exámenes parciales, la calificación de un proyecto final y la calificación final del curso. Ten en cuenta que estos valores son completamente ficticios y generados solo con fines ilustrativos.

a) Desarrollo del analisis de datos con estadistica descriptiva, que reporte resultados numericos y graficos del conjunto anterior de datos

Para realizar un análisis de datos con estadística descriptiva, calcularé algunas estadísticas clave y generaré gráficos para ilustrar mejor la distribución de las calificaciones. Usaré Python y algunas bibliotecas populares como Pandas, NumPy y Matplotlib para realizar estas operaciones.

Primero, supongamos que tienes el conjunto de datos en un formato CSV llamado "zootecnia_dataset.csv". A continuación, proporciono un código de ejemplo en Python para realizar un análisis de datos:

import pandas as pd import numpy as np import matplotlib.pyplot as plt # Lee el conjunto de datos desde un archivo CSV (o puedes usar directamente el DataFrame si ya lo tienes) df = pd.read_csv("zootecnia_dataset.csv") # Muestra las primeras filas del conjunto de datos print(df.head()) # Estadísticas descriptivas descripcion = df.describe() # Visualización de la distribución de las calificaciones finales plt.figure(figsize=(10, 6)) plt.hist(df['Calificación Final'], bins=10, edgecolor='black') plt.title('Distribución de Calificaciones Finales') plt.xlabel('Calificación Final') plt.ylabel('Frecuencia') plt.show() # Gráfico de dispersión entre los exámenes parciales y la calificación final plt.figure(figsize=(10, 6)) plt.scatter(df['Examen Parcial 1'], df['Examen Parcial 2'], c=df['Calificación Final'], cmap='viridis', edgecolors='k', alpha=0.7) plt.colorbar(label='Calificación Final') plt.title('Relación entre Examen Parcial 1, Examen Parcial 2 y Calificación Final') plt.xlabel('Examen Parcial 1') plt.ylabel('Examen Parcial 2') plt.show()

En este código:

  1. Se cargan los datos desde un archivo CSV (asegúrate de tener el archivo CSV con el nombre correcto y en el mismo directorio que tu script).
  2. Se muestran las primeras filas del conjunto de datos para verificar su estructura.
  3. Se calculan estadísticas descriptivas utilizando el método describe de Pandas.
  4. Se crea un histograma para visualizar la distribución de las calificaciones finales.
  5. Se crea un gráfico de dispersión para examinar la relación entre los exámenes parciales y la calificación final.

Recuerda que este código es un punto de partida y puedes ajustarlo según tus necesidades específicas y preferencias de visualización.


b) Desarrollo del script

Si estás trabajando en un entorno de Python, puedes utilizar un script para realizar el análisis de datos. Asegúrate de tener instaladas las bibliotecas necesarias (pandas, numpy y matplotlib). Puedes instalarlas ejecutando pip install pandas numpy matplotlib en tu entorno si aún no lo has hecho.

Aquí hay un script simple que puedes utilizar:

import pandas as pd import numpy as np import matplotlib.pyplot as plt # Crear un DataFrame con datos ficticios data = { 'Estudiante': range(1, 31), 'Edad': np.random.randint(20, 24, size=30), 'Género': np.random.choice(['M', 'F'], size=30), 'Asistencia': np.random.randint(85, 99, size=30), 'Examen Parcial 1': np.random.randint(75, 92, size=30), 'Examen Parcial 2': np.random.randint(78, 92, size=30), 'Proyecto Final': np.random.randint(85, 92, size=30) } df = pd.DataFrame(data) # Calcular la Calificación Final df['Calificación Final'] = 0.3 * df['Examen Parcial 1'] + 0.3 * df['Examen Parcial 2'] + 0.4 * df['Proyecto Final'] # Mostrar las primeras filas del DataFrame print("Primeras filas del DataFrame:") print(df.head()) # Estadísticas descriptivas descripcion = df.describe() print("\nEstadísticas descriptivas:") print(descripcion) # Visualización de la distribución de las calificaciones finales plt.figure(figsize=(10, 6)) plt.hist(df['Calificación Final'], bins=10, edgecolor='black') plt.title('Distribución de Calificaciones Finales') plt.xlabel('Calificación Final') plt.ylabel('Frecuencia') plt.show() # Gráfico de dispersión entre los exámenes parciales y la calificación final plt.figure(figsize=(10, 6)) plt.scatter(df['Examen Parcial 1'], df['Examen Parcial 2'], c=df['Calificación Final'], cmap='viridis', edgecolors='k', alpha=0.7) plt.colorbar(label='Calificación Final') plt.title('Relación entre Examen Parcial 1, Examen Parcial 2 y Calificación Final') plt.xlabel('Examen Parcial 1') plt.ylabel('Examen Parcial 2') plt.show()

Este script generará datos ficticios para 30 estudiantes, calculará la calificación final según una fórmula específica y mostrará las estadísticas descriptivas, un histograma de las calificaciones finales y un gráfico de dispersión entre los exámenes parciales y la calificación final. Puedes adaptar y ajustar este script según tus necesidades y datos reales.

c) El script se ejecuta en JupyterLab

Estadísticas descriptivas de Exanen_1 y Examen_2o de los dos examenes:

               Estudiante           Examen_1           Examen_2
count       30.000000          30.000000          30.000000
mean        15.500000          74.100000          73.433333
std              8.803408          13.414737          15.489002
min          1.000000              51.000000          51.000000
25%          8.250000             65.000000          59.250000
50%         15.500000          73.000000          72.000000
75%         22.750000          86.500000          87.500000
max         30.000000          98.000000          99.000000

Correlación entre Examen 1 y Examen 2: -0.04552209026392836

Primeras filas del DataFrame:
   Estudiante  Edad Género  Asistencia  Examen Parcial 1  Examen Parcial 2  \
              1        21          F          89                    75                    82   
              2        23          F          87                    81                    82   
              3        20          F          91                    77                    85   
              4        22          F          95                    75                    89   
              5        21          F          96                    83                    78   

       Proyecto Final  Calificación Final  
0              85                81.1  
1              89                84.5  
2              90                84.6  
3              85                83.2  
4              87                83.1  

Estadísticas descriptivas en general:
           Estudiante       Edad          Asistencia  Examen Parcial 1  Examen Parcial 2  \
count   30.000000      30.000000   30.000000         30.000000         30.000000   
mean    15.500000      21.533333   91.900000         82.500000         83.933333   
std          8.803408       1.166585    3.642186          4.725208          3.493179   
min      1.000000          20.000000   85.000000         75.000000         78.000000   
25%      8.250000          20.250000   89.000000         78.250000         82.000000   
50%     15.500000      22.000000   91.000000         83.000000         84.000000   
75%     22.750000      22.750000   95.000000         86.000000         85.000000   
max     30.000000      23.000000   98.000000         91.000000         91.000000   

       Proyecto Final  Calificación Final  
count       30.000000           30.000000  
mean        88.533333           85.343333  
std          2.177207            1.934565  
min         85.000000           81.100000  
25%         87.000000           84.100000  
50%         89.000000           85.200000  
75%         90.000000           86.275000  
max         91.000000           91.000000  





Conclusión:
  1. Estadísticas Descriptivas:

    • La edad de los estudiantes oscila entre 20 y 23 años, con una media de alrededor de 21 años.
    • El porcentaje de asistencia varía entre 85% y 98%, con una media cercana al 92%.
    • Las calificaciones de los exámenes parciales y el proyecto final también varían en el rango específico.
  2. Distribución de Calificaciones Finales:

    • La mayoría de los estudiantes tienen calificaciones finales en el rango medio, alrededor del 85-90.
    • Hay una distribución relativamente uniforme de las calificaciones finales, con pocos extremos.
  3. Relación entre Exámenes Parciales y Calificación Final:

    • Existe una correlación aparente entre los exámenes parciales y la calificación final. Los estudiantes que obtienen calificaciones altas en ambos parciales tienden a tener calificaciones finales más altas.
  4. Observaciones Adicionales:

    • No se observan patrones distintivos basados en el género de los estudiantes en este conjunto de datos ficticios.
    • La asistencia parece ser alta en general, lo que es positivo.

Es importante tener en cuenta que estos resultados se basan en datos generados aleatoriamente y no representan situaciones reales. Además, el análisis puede variar significativamente dependiendo de la calidad y la representatividad de los datos reales utilizados. Este análisis puede servir como punto de partida para un análisis más detallado y específico.



3.1.2. Estudio de Caso 2. (Evaluacion Sumativa de 10 estudiantes en tres materias básicas)

El siguiente conjunto de datos es solo un ejemplo y se puede ajustar los valores según las necesidades. Además, tomar en cuenta que la información proporcionada es ficticia y no representa a personas reales.

ID Estudiante | Nombre     | Edad | Género | Matemáticas (de 0 a 100) | Ciencias (de 0 a 100) | Literatura (de 0 a 100)
--------------|------------|------|--------|-------------------------|-----------------------|-------------------------
1             | Ana        | 16   | F      | 85                      | 78                    | 92
2             | Juan       | 15   | M      | 90                      | 85                    | 76
3             | María      | 17   | F      | 78                      | 92                    | 88
4             | Luis       | 16   | M      | 95                      | 80                    | 85
5             | Laura      | 15   | F      | 88                      | 75                    | 90
6             | Carlos     | 17   | M      | 82                      | 88                    | 78
7             | Sofia      | 16   | F      | 75                      | 95                    | 87
8             | Javier     | 15   | M      | 91                      | 87                    | 79
9             | Gabriela   | 17   | F      | 89                      | 84                    | 94
10            | Diego      | 16   | M      | 83                      | 91                    | 81

Este conjunto de datos tiene información básica sobre los estudiantes, como su ID, nombre, edad y género, así como las puntuaciones en las asignaturas de Matemáticas, Ciencias y Literatura. Puedes ajustar los valores según tus necesidades y agregar más columnas según los criterios de evaluación que desees incluir en tu evaluación sumativa.

Primero, calculemos algunas estadísticas descriptivas para cada asignatura:

Estadísticas Descriptivas para Matemáticas:

  • Media: 86.5 Mediana: 88.5 Desviación Estándar: 5.93 Mínimo: 75 Máximo: 95

Estadísticas Descriptivas para Ciencias:

Media: 86.5 Mediana: 87.5 Desviación Estándar: 6.77 Mínimo: 75 Máximo: 95

Estadísticas Descriptivas para Literatura:

Media: 84.6 Mediana: 86.5 Desviación Estándar: 6.37 Mínimo: 76 Máximo: 94

Ahora, creemos algunos gráficos para visualizar los datos:

  1. Histograma de Matemáticas:


Histograma de Ciencias:

Histograma de Literatura:




Interpretación de las Estadísticas Descriptivas

Estadísticas Descriptivas para Matemáticas:

  1. Media (promedio): 86.5

    • La puntuación promedio en Matemáticas para este grupo de estudiantes es 86.5.
  2. Mediana (valor medio): 88.5

    • La mediana es 88.5, lo que significa que el 50% de los estudiantes tienen puntuaciones superiores a 88.5 y el 50% tiene puntuaciones inferiores.
  3. Desviación Estándar: 5.93

    • La desviación estándar indica la dispersión de las puntuaciones. En este caso, una desviación estándar de 5.93 sugiere que las puntuaciones están relativamente cerca de la media.
  4. Mínimo: 75, Máximo: 95

    • La puntuación más baja en Matemáticas es 75, y la más alta es 95.

Estadísticas Descriptivas para Ciencias:

  1. Media (promedio): 86.5

    • La puntuación promedio en Ciencias es igual a la de Matemáticas, 86.5.
  2. Mediana (valor medio): 87.5

    • La mediana es 87.5, lo que sugiere una distribución similar a la de Matemáticas.
  3. Desviación Estándar: 6.77

    • La desviación estándar es ligeramente mayor que en Matemáticas, indicando una mayor dispersión de las puntuaciones en Ciencias.
  4. Mínimo: 75, Máximo: 95

    • La puntuación más baja en Ciencias es 75, y la más alta es 95.

Estadísticas Descriptivas para Literatura:

  1. Media (promedio): 84.6

    • La puntuación promedio en Literatura es 84.6.
  2. Mediana (valor medio): 86.5

    • La mediana es 86.5, sugiriendo una distribución similar a las otras asignaturas.
  3. Desviación Estándar: 6.37

    • La desviación estándar indica que las puntuaciones en Literatura también están relativamente dispersas, pero un poco menos que en Ciencias.
  4. Mínimo: 76, Máximo: 94

    • La puntuación más baja en Literatura es 76, y la más alta es 94.

Conclusión: Los estudiantes tienden a tener un rendimiento bastante consistente en Matemáticas y Ciencias, mientras que hay una ligera variabilidad en Literatura. Las medianas cercanas a las medias sugieren que las distribuciones son simétricas o aproximadamente simétricas. Las desviaciones estándar indican el grado de variabilidad en las puntuaciones, siendo un poco mayor en Ciencias que en las otras asignaturas.

Graficos adicionales:

Diagrama de Caja (Boxplot) para Matemáticas:


  • import matplotlib.pyplot as plt # Datos de Matemáticas matematicas = [75, 78, 82, 83, 85, 88, 89, 90, 91, 95] # Crear el boxplot plt.boxplot(matematicas) plt.title('Diagrama de Caja - Matemáticas') plt.xlabel('Matemáticas') plt.show()

  • Este gráfico mostrará la distribución de las puntuaciones en Matemáticas, destacando la mediana, el rango intercuartil (IQR) y cualquier valor atípico. De la misma forma se realiza para cada materia.


Gráfico de Barras Apiladas para Puntuaciones Promedio:

  • import matplotlib.pyplot as plt import numpy as np # Datos materias = ['Matemáticas', 'Ciencias', 'Literatura'] puntuaciones_promedio = [86.5, 86.5, 84.6] # Crear el gráfico de barras apiladas plt.bar(materias, puntuaciones_promedio, color=['blue', 'green', 'orange']) plt.title('Comparación de Puntuaciones Promedio') plt.xlabel('Materias') plt.ylabel('Puntuación Promedio') plt.show()

  • Este gráfico de barras apiladas compara las puntuaciones promedio en cada asignatura para resaltar las diferencias entre ellas.

Nota:

Estos son ejemplos básicos, y se puede personalizar los gráficos según las preferencias y necesidades específicas. Para gráficos más avanzados y personalizados, también se podria explorar la biblioteca Seaborn.

Estos scripts asumen que ya tienes instalada la biblioteca Matplotlib. Si no la tienes instalada, puedes hacerlo ejecutando pip install matplotlib en tu terminal o entorno de desarrollo de Python.






INDICE DE MI BLOG

  INDICE DE ARCHIVOS del Blog    Ø     MODULO III:   ANALISIS de DATOS con PYTHON y ASISTENTES INTELIGENTES     Publicada el 15 de Noviemb...