Está en la página 1de 6

import pandas as pd

import operator

#f=pd.read_csv("movie_metadata.csv")

def menu():
print("\t\tMovieAnalyzer \n1. Reporte Director-Pelculas \n2. Reporte Genero
Pelcula - Pelculas \n3. Reporte Director-Presupuesto "
"\n4. Reporte Popularidad Pelculas (imdb) \n5. Reporte Popularidad Pelculas
(Facebook) \n6. Reporte Pelcula-Director-Actores \n7. Salir \n")
#menu()

#********************************************opcion
1****************************************************************

def dicc_director_peliculas(archivo):
data = pd.read_csv(archivo) ##llamamos al
archivo por medio de data
panda_director_pelicula = data[["director_name", "movie_title"]] #secciona la
porcion del data para trabajarlo
dicci={} #crear un diccionario vacio para aadir a los directores de
clave y peliculas de valores
for i in range(len(data)): ##recorre la
longitud del panda
director=panda_director_pelicula["director_name"][i] ##llama los
directores uno por uno
pelicula=panda_director_pelicula["movie_title"][i] ##llama las
peliculas una por una
if director not in dicci: #si el nombre del director no se
encuentra en el diccionario dicc_director_peliculas
dicci[director]=[pelicula[:-2]] #agrega al diccionario el nombre del
director y el valor el nombre de pelicula que realiz
else: #si ya se
encuentra
dicci[director] +=[pelicula[:-2]] ##aade a las
demas peliculas
return(dicci)

#dicc_director_peliculas("movie_metadata.csv")

def top_Directores(diccionario):
file = open("director_peliculas.txt", "w") #crea y abre un
archivo "director_peliculas.txt"
file.write("Reporte Director-Peliculas") # escribe en el
archivo
diccionario = dicc_director_peliculas("movie_metadata.csv") #invoca a la
funcion que tiene el diccionario creado
for directores in diccionario: #recorre por
clave el diccionario

if 16 < len(diccionario[directores]) < 23: #pregunta si el


numero de cada valor de la clave es menor a 23 y mayor a 16
reporte = "Director: " + str(directores) + "\ncantidad peliculas: " +
str(len(diccionario[directores])) + "\nLista peliculas:\n" +
str(diccionario[directores]) + "\n"
print(reporte) #imprime el
reporte
file.write("\n\nDirector: " + directores) #escribe en el
archivo creado la linea
file.write("\nCantidad de peliculas: " + str(len(diccionario[directores])))
#file.write("\nLista de Peliculas", str(diccionario[directores]))
file.write(".")
file.close()

#diccionario = dicc_director_peliculas("movie_metadata.csv")
#top_Directores(diccionario)

#**********************************************opcion
2**************************************************************
def dicc_generos_peliculas(archivo):
data = pd.read_csv("movie_metadata.csv") ##llamamos al
archivo por medio de data
panda_genero_pelicula = data[["genres", "movie_title"]]
dicci={}
for i in range(len(data)): ##recorre la
longitud del data
pelicula=panda_genero_pelicula["movie_title"][i] ##llama las
peliculas una por una
genero=str(panda_genero_pelicula["genres"][i]).split("|") ##llama a los
generos uno por uno
for generoi in genero: ##para cada
elemento que est en genero
if str(generoi) not in dicci: ##preguntar si
el genero no se encuentra en el diccionario
dicci[str(generoi)] = [str(pelicula)[0:-2]] #agrega al
diccionario de clave, el nombre del genero, y de valor, el nombre de pelicula
else:
dicci[str(generoi)] += [str(pelicula)[0:-2]] ##aade a las
demas peliculas que pertenecen al genero
return(dicci)
dicc_generos_peliculas("movie_metadata.csv")

def generos(diccionario):
diccionario = dicc_generos_peliculas("movie_metada.csv") #llama a la
funcion que contiene el diccionario
l_generos=["Horror", "Drama", "Comedy", "Sci-Fi", "Thriller"] #hacer una lista
con los generos que deseo buscar
for gen in l_generos: #recorrer cada
genero de la lista
print("\nGenero:",gen) #imprime el
genero
print("Cantidad de peliculas: ",len(diccionario[gen])) #imprime la
cantidad de peliculas que pertenecen al genero
print("Lista de peliculas:\n",diccionario[gen]) #imprime las
peliculas

diccionario=dicc_generos_peliculas("movie_metada.csv")
#generos(diccionario)

#********************************************opcion 3
******************************************************************

def dicc_directores_budget(archivo):
data = pd.read_csv("movie_metadata.csv") ##llamamos al
archivo por medio de panda
panda_director_presupuesto = data[["director_name", "budget"]] #selecciona una
parte de data para trabajarlo
dicci={}
for i in range(len(data)): ##recorre la
longitud del panda
budget1= panda_director_presupuesto["budget"][i] ##llama a los
budget uno por uno
directores=panda_director_presupuesto["director_name"][i] ##llama a los
directores uno por uno
dicci[directores] = dicci.get(directores, []) + [budget1] #agrega al
diccionario de clave, el nombre del director, y de valor, el presupuesto por pelicula
#print(dicci)
return dicci

dicc_directores_budget("movie_metadata.csv")

def dicc_budget(dicc_directores_budget):
diccBudget={} # crear un
diccionario
for dir,bud in dicc_directores_budget.items(): #recorrer el
diccionario de los directores y presupuesto
acumulador=sum(bud) #sumar cada
valor de la clave
diccBudget[dir]=acumulador #agrega al
diccionario el director y el valor, el presupuesto por cada director en la pelicula
#print(diccBudget)
return diccBudget #retorna el
diccionario

dicc=dicc_directores_budget("movie_metadata.csv")
dicc_budget(dicc)
def top_Budget(diccBudget):
cont=0 #crear un
contador
l_Budget=[] #crear una lista
vacia
l_Director=[] #crear una lista
vacia
l_bud_dir=list(diccBudget.items()) #hace una lista
de tupla
for each_bud_dir in l_bud_dir: #recorre cada
elemento de la lista
l_Budget+=[each_bud_dir[1]] #agrega a la
lista el presupuesto
l_Director+=[each_bud_dir[0]] #agrega a la
lista el nombre del director
while cont!=5: #mientras el
contador sea diferente de 5
maximo_presupuesto=max(l_Budget) #selecciona el
maximo presupuesto
cont+=1 #va aumentando
el contador
index_max_budget=l_Budget.index(maximo_presupuesto) #pregunta donde
esta el indice el maximo presupuesto en la lista
print("Director: ", l_Director[index_max_budget]) #imprime el
nombre del director que tiene el maximo presupuesto
print("Presupuesto :", maximo_presupuesto, "dlares") #imprime el
presupuesto
print("\n")
Bud = l_Budget.remove(maximo_presupuesto) #quita de la
lista el maximo presupuesto
dir = l_Director.remove(l_Director[index_max_budget]) #quita el nombre
del director con el maximo presupuesto

dic=dicc_directores_budget("movie_metadata.csv")
dicc=dicc_budget(dic)
#top_Budget(dicc)

#********************************************opcion
4*******************************************************************
def dicc_movie_score(archivo):
data = pd.read_csv("movie_metadata.csv") ##llamamos al
archivo por medio de data
panda_movie_score = data[["movie_title", "imdb_score"]] ##seleccionar una
parte de la informacion de data para trabajarla
dicci={} ##crear un
diccionario vacio
for i in range(len(data)): ##recorre la
longitud de data
score_imdb= panda_movie_score["imdb_score"][i] ##llama a los
resultados uno por uno
pelicula=panda_movie_score["movie_title"][i] ##llama a los
peliculas uno por uno
dicci[pelicula[:-1]] =[score_imdb] #agrega al diccionario de clave, el
nombre del la pelicula, y de valor, los resultados
#print(dicci)
return dicci

dicc_movie_score("movie_metadata.csv")

def dicc_Imdb(dicc): #recibir el


diccionario creado en la anterior funcion
diccImdb={} #crear un
diccionario vacio
for movie,valor_imdb in dicc.items(): #recorrer los
valores del diccionario
diccImdb[movie]=valor_imdb[0] #agregar al
diccionario creado de clave la pelicula y de valor imdb
return (diccImdb)

d=dicc_movie_score("movie_metadata.csv")
dicc_Imdb(d)

def top_IE(dicc):
cont = 0 #crear un
contador
l_imdb= list(dicc.values()) #hacer una lista
de las claves del diccionario
l_peliculas= list(dicc.keys()) #hacer una lista
de los valores del diccionario
l_Top_IE=[] #crear una lista
vacia
diccionario_Top=dict(l_Top_IE)
while cont != 10: #mientras que el
contador sea diferente a 10
l_menos_imdb=[] #crear una lista
vacia
maximoImdb= max(l_imdb) #buscar el max
valor del imdb
ind_Imdb = l_imdb.index(maximoImdb) #localizar el
indice donde se encuentra situado dentro d ela lista
cont += 1 #ir aumentando
el contador en 1
l_Top_IE= l_Top_IE + [(l_peliculas[ind_Imdb].strip(), maximoImdb)] #llenar la
lista l_top_IE con una tupla
l_menos_imdb= l_imdb.remove(maximoImdb) #quitar el
maximo valor de la lista
l_menos_peli=l_peliculas.remove(l_peliculas[ind_Imdb]) #quitar el
nombre de la pelicula que tiene el maximo valor
return(l_Top_IE)

d=dicc_movie_score("movie_metadata.csv")
dic=dicc_Imdb(d)
top_IE(dic)

def retornar_info(lista): #recibe la lista


creada en la funcion anterior
for i in lista: #recorre cada
elemento de la lista
movie=i[0] # guarda en una
variable el indice de las peliculas
scoress=(str(i[1])) #guarda en una
variable el indice de los resultados del imdb
print(str(movie).ljust(50, " "), str(scoress)) #imprime la
pelicula y el resultado

d=dicc_movie_score("movie_metadata.csv")
dic=dicc_Imdb(d)
dicc=top_IE(dic)
#retornar_info(dicc)

#********************************************opcion 5
******************************************************************

def topTenPeliculas(nombreArchivo):
data = pd.read_csv(nombreArchivo) #lee el archivo
recibido
diccionario = {} #crear un
diccionario
movie_title = data["movie_title"] #obtiene el
nombre de las peliculas
facebook_like = data["movie_facebook_likes"] #obtiene la
cantidad de likes de cada peliculas en facebook
for i in range(len(facebook_like)): #recorre el
rango de los datos
diccionario[movie_title[i].strip()] = facebook_like[i] #agrega al
diccionario en la clave el nombre y en el valor, la cantidad de likes
datos = diccionario.items() # hace un
conjunto de tuplas con la clave y el valor del diccionario
#print(datos)
ordenado = sorted(datos, key=operator.itemgetter(1)) #ordena los
datos en una lista en forma de tupla de la pelicula y su cantidad de likes
ordenado.reverse() #invierte los
valores de mayor a menor
#print(ordenado)
lista_peliculas = [] #crear una lista
para agregar las peliculas
lista_likes = [] #crear una lista
para agregar los likes
for i in range(10): #recorrer en un
rango de 10
lista_peliculas.append(ordenado[i][0]) #agregar a la
lista las peliculas
lista_likes.append(ordenado[i][1]) #agregar a la
lista la cantidad de likes
#print(lista_peliculas)
#print(lista_likes)

serie = {'movie_title': pd.Series(lista_peliculas), #coloca los


datos en forma vertical
'movie_facebook_likes': pd.Series(lista_likes)}

df = pd.DataFrame(serie) #hace una tabla


de datos, segun la informacion de la serie
print(df)
#topTenPeliculas("movie_metadata.csv")

def infoDirector(nombreArchivo):
data = pd.read_csv(nombreArchivo) #lee el archivo
data["movie_title"] = data["movie_title"].str.strip()
titulos = ["Avatar", "The Cave", "Mad Max"] #hacer una lista
con los nombres de las peliculas que busco
frames = [] #crear una lista
vacia
for titulo in titulos: #para cada
elemento en la lista titulos
frames.append(data[data["movie_title"] == titulo].reset_index()[["movie_title",
"director_name", "actor_1_name", "actor_2_name", "actor_3_name"]])
#print(frames)
total = pd.concat(frames) # une las dos
listas
print(total) #las imprime en
forma de tabla
directores = list(total["director_name"]) #hacer una lista
con el nombre del director
peliculas = list(total["movie_title"]) #hacer una lista
con el nombre de las peliculas
actores_principales = list(total["actor_1_name"]) #hacer una lista
con los protagonistas
actores_secundarios = list(total["actor_2_name"]) #hacer una lista
con los actores secundarios
actores_terceros = list(total["actor_3_name"]) #hacer una lista
de los actores de repartos
diccionario =
{"directores":directores,"peliculas":peliculas,"protagonista":actores_principales,"Secun
dario":actores_secundarios,"reparto":actores_terceros} #creo un diccionario de la
infomacion
#print(diccionario)

#infoDirector("movie_metadata.csv")

menu()
opcion=int(input("Seleccione una opcion"))

while 0<opcion<8:
if opcion==1: # si la
opcion es igual a 1, se genera un reporte
diccionario=dicc_director_peliculas("movie_metadata.csv") #invocar a
la funcion que crea el diccionario con los directores
top_Directores(diccionario)
print("\n")
print("################################ ELIJA OTRA OPCION
#########################################")
print("\n")
menu1=menu()
opcion = int(input("Seleccione una opcion (1-7): "))

if opcion==2:
diccionario = dicc_generos_peliculas("movie_metada.csv")
generos(diccionario)
print("\n")
print("################################ ELIJA OTRA OPCION
#########################################")
print("\n")
menu1 = menu()
opcion = int(input("Seleccione una opcion (1-7): "))

if opcion==3:
dic = dicc_directores_budget("movie_metadata.csv")
dicc = dicc_budget(dic)
top_Budget(dicc)
print("\n")
print("################################ ELIJA OTRA OPCION
#########################################")
print("\n")
menu1 = menu()
opcion = int(input("Seleccione una opcion (1-7): "))

if opcion==4:
d = dicc_movie_score("movie_metadata.csv")
dic = dicc_Imdb(d)
dicc = top_IE(dic)
retornar_info(dicc)
print("\n")
print("################################ ELIJA OTRA OPCION
#########################################")
print("\n")
menu1 = menu()
opcion = int(input("Seleccione una opcion (1-7): "))

if opcion==5:
topTenPeliculas("movie_metadata.csv")
print("\n")
print("################################ ELIJA OTRA OPCION
#########################################")
print("\n")
menu1 = menu()
opcion = int(input("Seleccione una opcion (1-7): "))

if opcion==6:
infoDirector("movie_metadata.csv")
print("\n")
print("################################ ELIJA OTRA OPCION
#########################################")
print("\n")
menu1 = menu()
opcion = int(input("Seleccione una opcion (1-7): "))

if opcion==7:
print("SALI CON XITO DEL PROGRAMA... GRACIAS!!!")
opcion=0

También podría gustarte