3. Archivos CSV

3.4. Usando pandas

Primero de todo instalamos el módulo de pandas:

Figura 1

Es un paquete que te ayuda a trabajar con datos multidimensionales que son comunes en estadística o econometría. El nombre viene de PANel DAta Set.

Por otro lado, pandas es muy útil para manipular tablas de datos, esto con la estructura de datos que vamos a conocer como data frames.

Los dataframes tiene la particularidad de que diferentes tipos de variables pueden encajar en la misma tabla. Esto a diferencia de un array de que sólo admite un tipo de dato por conjunto de datos (suena a diccionarios o listas de Python)

Por último, pandas está construido sobre numpy lo que lo hace también súper rápido y eficiente.

Consigna

Se tiene un archivo llamado evaluaciones.csv  y se quiere procesar para calcular el promedio de los parciales y finalmente mostrar una gráfico de torta con los aprobados ( >=6) y los No aprobados (<6).

Figura 2

Vamos a usa pd para asociar el archivo evaluaciones.csv al objeto df. Luego agregamos una columna mas, llamada promedio con el método .assign completamos todas las líneas de esa columa en cero ( Promedio =0).

Para mas información de panda (https://pandas.pydata.org/) y leer la documentación sobre los métodos. También podemos recurrir a w3schools , que tiene algún ejemplo  ( https://www.w3schools.com/python/pandas/ ) .

La salida del script sería:


Vamos a calcular el promedio de las notas y guardarlo en la columna Promedio.

Si queremos saber el tipo de datos de nuevo_file:


El DataFrame es una clase de datos de Pandas, que  te permite almacenar y manipular datos tabulados en filas de observaciones y columnas de variables.

Así que veremos en la librería de panda como trabajar con ese tipo de dato Dataframe de pandas para agregar el cálculo de los promedios, hay varias maneras de crear un DataFrame, el diccionario de Python es uno de ellas.
Hay varias maneras de referencias a un elemento del  DataFrame de Pandas y operar sobre el mismo.
Una de las más sencillas es usar el nombre del objeto (punto) objeto o propiedad entre corchetes  la notación de la misma manera que hacíamos en listas.



El scritp quedaría:

Esta línea  12 asigna una nueva columna llamada Promedio. En este punto el DataFrame se llama file, sobre las columnas parcial1, parcial2 y parcial3 se hace el promedio .mean de cada fila  ( axis=1).
Todo esto se guarda en nuevo_file , que sería el nuevo DataFrame.


Ahora creamos una nueva columna, para poder poner la condición del Alumno, por el momento ponemos "Libre" a todos, para luego reemplazar donde corresponde por "Regular".

Es script quedaría:


El objeto nuevo_file invocamos el método .assign que crea una nueva columna y asigna el string "Libre" a esa columna.


Hoy hicimos referencia a la manera de acceder a elementos de un DataFrame, solo para mostrar como sería:

El método .lioc permite localizar en la columna 5 ( que es la que tiene el  promedio) de todas las filas
La salida de este print sería algo como:


No vamos a usar este tipo de referencia. Vamos a usar otra forma de recorrer las filas de la columna Condición, para escribir la condición que corresponde,  si el promedio es superior o igual a 6, escribimos "Regular" donde teníamos el string "Libre".


con el método .loc localizamos en cada fila de la columna "Promedio" las que tengan un valor de 6 o mas y reemplazamos en esa fila, en la columna "Condición" por "Regular". Se vería de la siguiente forma:

Finalmente vamos a escribir este DataFrame como archivo csv de nombre evaluaciones_nuevo.csv y usando la librería matplotlib.pyplot vamos a graficar con gráfico de torta la cantidad de Regulares y Libres.

Esta es una primer versión del scritp, se puede optimizar y mejorar, se deja al alumno investigar sobre el tema.

El gráfico ser vería:

https://sparkbyexamples.com/pandas/p