Skip to content

Instantly share code, notes, and snippets.

@JajoScript
Last active June 4, 2023 05:34
Show Gist options
  • Save JajoScript/daecc5a5af153a315d22910ac2b314d1 to your computer and use it in GitHub Desktop.
Save JajoScript/daecc5a5af153a315d22910ac2b314d1 to your computer and use it in GitHub Desktop.
Ejercicio python graficos - videojuegos
# 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()
@JajoScript
Copy link
Author

JajoScript commented Jun 4, 2023

Actualización

Optimice ciertas funcionalidades y ordene el código.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment