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:19] 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 ===== ===== 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]}
 +
 +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.1749100750.txt.gz
  • Última modificación: 2025/06/05 05:19
  • por upadmin