Last active
June 4, 2023 05:34
-
-
Save JajoScript/daecc5a5af153a315d22910ac2b314d1 to your computer and use it in GitHub Desktop.
Ejercicio python graficos - videojuegos
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# No me hago responsable de la distribución de este codigo. | |
# * -- Dependencias. | |
import matplotlib.pyplot as plt | |
# * -- Variables globales. | |
# [Genre, Year, NA_Sales, EU_Sales, JP_Sales, Global_Sales] | |
datos_todos: list = [] | |
datos_2020: list = [] | |
datos_2017: list = [] | |
datos_publicidad: list = [] | |
# * -- Definición de funciones. | |
def leerArchivo(nombre_archivo: str): | |
Archivo = open(nombre_archivo, "rt", encoding="utf-8") | |
num_linea: int = 0 | |
for linea in Archivo: | |
# Se debe omitir la primera linea, dado que, contiene las cabeceras de información. | |
if (num_linea != 0): | |
linea = linea.replace("\n", "") | |
dato: list[str] = linea.split(",") | |
datos_todos.append(list(dato)) | |
num_linea = num_linea + 1 | |
def escribirArchivo(): | |
pass | |
def filtrarPorAnno(anno: int) -> list: | |
lista_filtrada: list = [] | |
for dato in datos_todos: | |
dato_anno = int(dato[1]) | |
if (anno == dato_anno): | |
lista_filtrada.append(dato) | |
return lista_filtrada | |
def formatear_ventas_globales(elemento: list) -> float: | |
return float(elemento[5]) | |
def formatear_ventas_europa(elemento: list) -> float: | |
return float(elemento[3]) | |
def formatear_anno(elemento: list) -> int: | |
return int(elemento[1]) | |
def problema_1(lista_datos: list) -> list: | |
# Se ordena la lista viendo el ultimo elemento de la lista "Global_Sales". Finalmente, se retorna el primer elemento de la lista ordenada. | |
lista_datos.sort(reverse=True, key=formatear_ventas_globales) | |
return lista_datos[0] | |
def problema_2(lista_datos: list) -> list: | |
# Se ordena la lista viendo el cuarto elemento de la lista "EU_Sales". Finalmente, se retorna el quinto elemento de la lista ordenada. | |
lista_datos.sort(reverse=True, key=formatear_ventas_europa) | |
return lista_datos[4] | |
def problema_3(lista_datos: list) -> None: | |
lista_datos.sort(reverse=False, key=formatear_anno) | |
# [year] | |
lista_annos = [] | |
# [year, NA, EU, JP, Global] | |
lista_totales = [] | |
for fila in lista_datos: | |
anno = int(fila[1]) | |
if not (anno in lista_annos): | |
lista_annos.append(anno) | |
lista_totales.append([anno, 0, 0, 0, 0]) | |
# Recorrer la lista e ir sumando los totales de ventas de cada region. | |
for fila in lista_datos: | |
actual_anno = int(fila[1]) | |
for total in lista_totales: | |
if (total[0] == actual_anno): | |
# Total Ventas NA | |
total[1] = round(total[1] + float(fila[2]), 2) | |
# Total Ventas EU | |
total[2] = round(total[2] + float(fila[3]), 2) | |
# Total Ventas JP | |
total[3] = round(total[3] + float(fila[4]), 2) | |
# Total Ventas Global | |
total[4] = round(total[4] + float(fila[5]), 2) | |
for fila in lista_totales: | |
anno = int(fila[0]) | |
ventas_NA = float(fila[1]) | |
ventas_EU = float(fila[2]) | |
ventas_JP = float(fila[3]) | |
ventas_global = float(fila[4]) | |
publicidad_NA: float = (ventas_NA / ventas_global) * 100 | |
publicidad_NA = round(publicidad_NA, 2) | |
publicidad_EU: float = (ventas_EU / ventas_global) * 100 | |
publicidad_EU = round(publicidad_EU, 2) | |
publicidad_JP: float = (ventas_JP / ventas_global) * 100 | |
publicidad_JP = round(publicidad_JP, 2) | |
datos_publicidad.append( | |
list([anno, publicidad_NA, publicidad_EU, publicidad_JP, ventas_global])) | |
def mostrar_grafico_1(): | |
figura, ejes = plt.subplots() | |
pass | |
def mostrar_grafico_2(): | |
figura, ejes = plt.subplots() | |
pass | |
def mostrar_grafico_3(): | |
figura, ejes = plt.subplots() | |
lista_annos = [] | |
lista_regiones = ["NA", "EU", "JP"] | |
lista_colores = ["#FF0000", "#00FF00", "#0000FF"] | |
for dato in datos_publicidad: | |
anno = int(dato[0]) | |
lista_annos.append(anno) | |
for dato in datos_publicidad: | |
anno = int(dato[0]) | |
publicidad_NA = float(dato[1]) | |
publicidad_EU = float(dato[2]) | |
publicidad_JP = float(dato[3]) | |
ejes.bar( | |
anno, [publicidad_NA, publicidad_EU, publicidad_JP], label=lista_regiones, color=lista_colores) | |
ejes.set_ylabel("Porcentaje de publicidad") | |
ejes.set_xlabel("Año") | |
pass | |
def main(): | |
# Paso 0: Lectura del archivo. | |
leerArchivo("game_sales.csv") | |
# Paso 1: Identificar el genero principal que obtuvo más ventas el año 2017. | |
datos_2017 = filtrarPorAnno(2017) | |
resultados_1: list = problema_1(datos_2017) | |
# Paso 2: Identificar el genero que obtuvo el 5to lugar en ventas en europa en el año 2020. | |
datos_2020 = filtrarPorAnno(2020) | |
resultados_2: list = problema_2(datos_2020) | |
# Paso 3: Identificar la inversion de publicidad que realizo cada región cada año. | |
problema_3(datos_todos) | |
# Paso 4: Mostrar graficos. | |
mostrar_grafico_1() | |
mostrar_grafico_2() | |
mostrar_grafico_3() | |
plt.show() | |
# Paso X: Escritura del archivo. | |
# * -- Ejecución. | |
if (__name__ == "__main__"): | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Actualización
Optimice ciertas funcionalidades y ordene el código.