Oaks Lab - Soluciones a los desafíos
Esta página contiene todas las soluciones a los desafíos de Oaks Lab.
Sala 0
Basta con ejecutar el código (sin realizar cambios):
# Completa los valores correctos
import pandas as pd
pd.set_option('display.max_columns', None)
url = 'https://gist.githubusercontent.com/armgilles/194bcff35001e7eb53a2a8b441e8b2c6/raw/92200bc0a673d5ce2110aaad4544ed6c4010f687/pokemon.csv'
df = pd.read_csv(url)
# Mostrar las primeras filas
df.head()
# Verifica tu respuesta
import sala
sala.verificar(url, df)Sala 1
Solución:
# Cargar datos nuevamente
import pandas as pd
pd.set_option('display.max_columns', None)
url = 'https://gist.githubusercontent.com/armgilles/194bcff35001e7eb53a2a8b441e8b2c6/raw/92200bc0a673d5ce2110aaad4544ed6c4010f687/pokemon.csv'
df = pd.read_csv(url)
# Explora los datos
print("Mostrando información general del dataset:")
info = df.info()
print("\nMostrando descripción estadística del dataset:")
desc = df.describe()
print(desc)
# Verifica tu respuesta
import sala
sala.verificar(desc)Sala 2
Ejecutar:
# Cargar nuevamente el dataset
import pandas as pd
import matplotlib.pyplot as plt
url = 'https://gist.githubusercontent.com/armgilles/194bcff35001e7eb53a2a8b441e8b2c6/raw/92200bc0a673d5ce2110aaad4544ed6c4010f687/pokemon.csv'
df = pd.read_csv(url)
# Contar Pokémon por tipo
conteo = df['Type 1'].value_counts()
# Crear gráfico de barras
conteo.plot(kind='bar')
plt.title('Cantidad de Pokémon por Tipo')
plt.xlabel('Tipo')
plt.ylabel('Cantidad')
plt.xticks(rotation=45)
plt.show()
# Número total de tipos de Pokémon
respuesta = conteo.shape[0] # ¿Cuántos tipos hay?
# Verifica tu respuesta
import sala
sala.verificar(respuesta)Sala 3
Usar el código:
# Cargar datos
import pandas as pd
url = 'https://gist.githubusercontent.com/armgilles/194bcff35001e7eb53a2a8b441e8b2c6/raw/92200bc0a673d5ce2110aaad4544ed6c4010f687/pokemon.csv'
df = pd.read_csv(url)
# Agrupar y calcular promedio
promedio = df.groupby('Type 1')[['HP', 'Attack', 'Defense', 'Speed']].mean().reset_index()
# Definir respuestas
promedio_orden_ataque = promedio.sort_values("Attack", ascending=False)
respuesta_ataque = promedio_orden_ataque["Type 1"].values[0] # Tipo con mayor ataque promedio
promedio_orden_defensa = promedio.sort_values("Defense", ascending=True)
respuesta_defensa = promedio_orden_defensa["Type 1"].values[0] # Tipo con menor defensa promedio
print("Promedio por tipo:")
print(promedio)
print("Tipo con mayor ataque promedio:", respuesta_ataque)
print("Tipo con menor defensa promedio:", respuesta_defensa)
# Verifica tu respuesta
import sala
sala.verificar(respuesta_ataque, respuesta_defensa)Sala 4
Usar el código:
import pandas as pd
import matplotlib.pyplot as plt
url = 'https://gist.githubusercontent.com/armgilles/194bcff35001e7eb53a2a8b441e8b2c6/raw/92200bc0a673d5ce2110aaad4544ed6c4010f687/pokemon.csv'
df = pd.read_csv(url)
# Elegir columnas
col_x = "Attack" # Por ejemplo: 'Attack', 'Defense', 'HP', 'Speed'
col_y = "Defense" # Por ejemplo: 'Attack', 'Defense', 'HP', 'Speed'
color = "orange" # Por ejemplo: 'orange', 'green', 'blue', 'red'
# Crear columna suma
df['suma'] = df[col_x] + df[col_y]
# Gráfico de dispersión
plt.figure(figsize=(10, 6))
plt.scatter(df[col_x], df[col_y], color=color)
plt.title(f'{col_x} vs {col_y} de Pokémon')
plt.xlabel(col_x)
plt.ylabel(col_y)
plt.grid()
plt.show()
# Mostrar Top 5 Pokémon
print("Top 5 Pokémon con mayor suma entre", col_x, "y", col_y)
tabla_top5 = df[['Name', col_x, col_y, 'suma']].sort_values('suma', ascending=False).head(5)
print(tabla_top5)
# Definir respuesta
respuesta = tabla_top5["Name"].values[0] # Escribe aquí el nombre del Pokémon con mayor suma
# Verifica tu respuesta
import sala
sala.verificar(col_x, col_y, respuesta)Sala final
Sin cambios. No es necesario ejecutar código.