indice:uba:ingenieria:uba-xxi:pensamiento-computacional:guias-y-resueltos:guia-7

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
indice:uba:ingenieria:uba-xxi:pensamiento-computacional:guias-y-resueltos:guia-7 [2025/06/05 05:44] upadminindice:uba:ingenieria:uba-xxi:pensamiento-computacional:guias-y-resueltos:guia-7 [2025/06/06 04:52] (actual) upadmin
Línea 3: Línea 3:
   * {{ :indice:uba:ingenieria:uba-xxi:pensamiento-computacional:guias-y-resueltos:guia_de_ejercicios_n_7.docx.pdf |Guía de Ejercicios Nro 7}}   * {{ :indice:uba:ingenieria:uba-xxi:pensamiento-computacional:guias-y-resueltos:guia_de_ejercicios_n_7.docx.pdf |Guía de Ejercicios Nro 7}}
  
 +  * {{ :indice:uba:ingenieria:uba-xxi:pensamiento-computacional:guias-y-resueltos:data_frame_pandas_y_consignas_-_guia_de_ejercicios_n_7.py |Data Frame Pandas y Consignas - Guía de Ejercicios Nro 7}}
  
 +===== Resueltos =====
  
 +<file python resueltos_guia_7.py>
 +# Datos y Creacion del Data Frame
  
 +import pandas as pd
 +print(pd.__version__) #version de pandas que se esta usando
  
 +peliculas = {'nombre': ['Titanic', 'Kil Bill', 'Matrix', 'El padrino', 'Avatar',
 +                        'Casablanca', 'El exorcista',  'Soy leyenda',
 +                        'El club de la pelea', 'Mujercitas'],
 +            'director': ['James Cameron', 'Quentin Tarantino', 'Hermanas Wachowski',
 +                        'Francis Ford Coppola', 'James Cameron', 'Michael Curtiz',
 +                        'William Friedkin', 'Francis Lawrence','David Fincher',
 +                        'Greta Gerwig'],
 +            'año': [1997, 2003, 1999, 1972, 2009, 1942, 1973, 2007, 1999, 2019],
 +            'género': ['romance', 'acción', 'ciencia ficción', 'drama', 'ciencia ficción', 'drama', 'terror',
 +                        'ciencia ficción', 'drama', 'drama'],
 +            'puntaje': [8.6, None, 6.9, 7.5, 9.1, 6.0, None, None, 9.4, 8.0]}
  
-===== Resueltos =====+df pd.DataFrame(peliculas) #crea Data Frame 
 + 
 +#Algunas Funciones de Pandas 
 +""" 
 +print(df) #Imprime Data Frame 
 +df.info() #da informacion sobre el Data Frame 
 +print(df.describe()) #Algunas medidas como cual es el valor maximo, el minimo, los percentiles, etc 
 +print(df.head(3)) #imprime 3 primeras filas del Data Frame (0;1;2) 
 +print(df.iloc[3:5]) #imprime filas 3 y 4 del Data Frame (se cuenta desde 0 con lo cual estrictamente son la cuarta y quinta fila) 
 +print(df.loc[3:5,["director", "año"]]) #Imprime filas 3, 4 y 5 y las columnas "director" y "año" del Data frame (se cuenta desde 0 con lo cual estrictamente son la cuarta, quinta y la sexta fila) 
 +print(df.loc[df.index[[3, 5]], ["director", "año"]]) #Imprime filas 3 y 5 y las columnas "director" y "año" del Data frame (se cuenta desde 0 con lo cual estrictamente son la cuarta y la sexta fila) 
 +print(df[df["puntaje"]>7.9]) #Imprime el Data Frame filtrando las filas por la condicion que se cumpla en la columna "puntajes" de que el mismo debe ser mayor a 7.9 
 +print(df[df["puntaje"].isnull()]) #Imprime el Data Frame filtrando las filas por la condicion de que en la columna no haya datos 
 +print(df[(df["director"== "James Cameron") & (df["puntaje"] > 9)]) #Filtra filas segun mas de una condicion en columnas usando and 
 +print(df[(df["director"== "James Cameron") | (df["puntaje"] > 9)]) #Filtra filas segun mas de una condicion en columnas usando or 
 +print(df[(df["director"== "James Cameron") & ~(df["puntaje"] > 9)]) #Filtra filas segun mas de una condicion en columnas usando and y negacion 
 +print(df[df["puntaje"].between(6, 7)]) #Filtra filas segun condicion en columna con cota inferior y superior 
 +df.loc[4,"nombre""Se lo que hicieron el verano pasado" #reemplaza la celda de la fila 4 columna nombre 
 +print(df) 
 +print(df["año"].sum()) #Suma (o si es string concatena) toda la columna año 
 +print(df.groupby("director")["puntaje"].mean()) #crea tabla con el promedio de puntaje de cada director 
 +df.loc[10] ["El silencio de los inocentes", "Jonathan Demme", 1991, "policial", 8.9] #agrega una fila 
 +print(df) 
 +df df.drop(10) #borra una fila, en este caso la 10 
 +print(df) 
 +print(df["director"].value_counts()) # hace una tabla contando las apariciones de los elementos de una columna 
 +df=df.sort_values(by=["género", "puntaje"], ascending=[False, True]) #ordena la tabla primero por genero (descendiendo) y luego por puntaje(ascendiendo) 
 +print(df) 
 +df["género"]=df["género"].map({"terror":"genero desagradable", "drama":"no me gusta"}) #aplica la funcion map a la columna genero reemplazando las coincidencias y borrando las no coincidencias 
 +print(df) 
 +df["género"]=df["género"].replace("no me gusta","ahora si me gusta") #reemplaza ciertos elementos de una columna por otro que indiquemos 
 +print(df) 
 +""" 
 + 
 +# 1) Mostrar la información del DataFrame con el método info(), ¿Cómo se llaman y qué tipo de dato tiene cada columna? ¿Cuántos elementos nulos hay en cada columna? Interpretar qué información se guarda en esta tabla y para qué puede servir. 
 +df.info() 
 +print() 
 +"""Las columnas son nombre (object), director (object), año (int64), género (object) y puntaje (float64). 
 +En la columna puntaje hay 3 nulos. En el resto no hay nulos. 
 +Se guarda la cantidad de columnas, el nombre de las columnas, la cantidad de filas, la cantidad de datos no nulos en cada columna y los tipos de objetos que hay en cada columna. 
 +""" 
 + 
 +# 2) Mostrar sólo los nombres de las primeras 3 películas del DataFrame. 
 + 
 +print(df.loc[0:2,["nombre"]]) 
 +print() 
 + 
 +"""Alternativamente""" 
 + 
 +print(df.head(3)["nombre"]) 
 +print() 
 + 
 +# 3) Mostrar sólo el director y el género de todas las películas. 
 + 
 +print(df.loc[:,["director","género"]]) 
 +print() 
 + 
 +# 4) Mostrar las películas que sean de drama. 
 + 
 +print(df[df["género"] == "drama"]) 
 +print() 
 + 
 +# 5) ¿Qué cantidad de películas hay de cada género? 
 + 
 +print(df["género"].value_counts()) 
 +print() 
 + 
 +# 6) Mostrar las películas que tengan puntaje entre 6 y 8 y cuyo año de estreno sea anterior a los 2000. 
 + 
 +print(df[(df["puntaje"].between(6, 8)) & (df["año"] < 2000)]) 
 +print() 
 + 
 +# 7) Mostrar las películas que no hayan sido puntuadas (que el puntaje tenga un valor nulo). 
 + 
 +print(df[df["puntaje"].isnull()]) 
 +print() 
 + 
 +# 8) Calcular el promedio del puntaje de todas las películas. 
 + 
 +print(df["puntaje"].mean()) 
 +print() 
 + 
 +# 9) Ordenar las películas en orden alfabético descendente. 
 + 
 +print(df.sort_values(by=["nombre"], ascending=[False])) 
 +print() 
 + 
 +# 10) Mostrar las 3 películas más antiguas. 
 + 
 +df_ordenada_por_año=df.sort_values(by=["año"], ascending=[True]) 
 +print(df_ordenada_por_año.head(3)) 
 +print() 
 + 
 +# 11) Mostrar sólo el nombre y el año de las 3 películas más nuevas. 
 + 
 +df_ordenada_por_año_mas_nuevo=df.sort_values(by=["año"], ascending=[False]) 
 +print(df_ordenada_por_año_mas_nuevo.iloc[:3][["nombre", "año"]]) 
 +print() 
 + 
 +# 12) Agregar una columna que indique si la película fue vista, o no. Una película fue vista cuando tiene puntaje no nulo
  
 +df["fue_vista"] = df["puntaje"].notnull()
 +print(df) 
 +</file>
  • indice/uba/ingenieria/uba-xxi/pensamiento-computacional/guias-y-resueltos/guia-7.1749102265.txt.gz
  • Última modificación: 2025/06/05 05:44
  • por upadmin