# 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)