Primeros n nombres
Devolvé los nombres de las primeras `n` filas, como lista.
Entrá y llevá tu progreso —ejercicios, medallas y Pokémon— a cualquier dispositivo. 🔄
Si tu cuenta ya tiene progreso guardado, se carga ese al entrar.
Entraste como . Tu progreso se sincroniza solo. 🔄
Devolvé los nombres de las primeras `n` filas, como lista.
🎯 Meta: elegir exactamente las filas y columnas que te interesan. Filtrar es el 80% del trabajo de un analista.
Ya tenés tu Pokédex como DataFrame. Ahora vas a hacerle preguntas: ¿quiénes superan el nivel 50? ¿cuáles son de tipo Fuego? ¿quién es el más fuerte?
.iloc usa posiciones (como los índices de una lista: 0, 1, 2…).
import pandas as pd
pokedex = pd.DataFrame({
"nombre": ["Pikachu", "Charizard", "Bulbasaur"],
"nivel": [25, 90, 12],
})
print(pokedex.iloc[0]) # primera fila
print(pokedex.iloc[1]["nombre"]) # nombre de la 2da fila -> Charizard
Lo más poderoso: le pasás una condición entre corchetes y te quedan solo las filas que cumplen.
import pandas as pd
pokedex = pd.DataFrame({
"nombre": ["Pikachu", "Charizard", "Bulbasaur", "Snorlax"],
"nivel": [25, 90, 12, 70],
"tipo": ["Eléctrico", "Fuego", "Planta", "Normal"],
})
print(pokedex[pokedex["nivel"] >= 50]) # los de nivel 50+
print(pokedex[pokedex["tipo"] == "Fuego"]) # los de tipo Fuego
💡 pokedex["nivel"] >= 50 da una Series de True/False (una máscara, como en NumPy). pandas usa esa máscara para filtrar filas.
P: ¿Qué hace `pokedex[pokedex["nivel"] >= 50]`?
- Devuelve la fila en la posición 50.
- Devuelve el valor `50` de la columna nivel.
+ Devuelve todas las filas donde el nivel es 50 o más.
> `pokedex["nivel"] >= 50` crea una máscara True/False. Pasarla entre corchetes filtra y mantiene solo las filas donde es `True`.
Combinás con & (y) / | (o). Ojo: cada condición va entre paréntesis.
import pandas as pd
pokedex = pd.DataFrame({
"nombre": ["Pikachu", "Charizard", "Snorlax"],
"nivel": [25, 90, 70],
"tipo": ["Eléctrico", "Fuego", "Normal"],
})
fuertes_no_fuego = pokedex[(pokedex["nivel"] > 30) & (pokedex["tipo"] != "Fuego")]
print(fuertes_no_fuego)
P: Para combinar dos condiciones en un filtro pandas (nivel > 30 **y** tipo Fuego), ¿cuál es la sintaxis correcta?
- `pokedex[pokedex["nivel"] > 30 and pokedex["tipo"] == "Fuego"]`
+ `pokedex[(pokedex["nivel"] > 30) & (pokedex["tipo"] == "Fuego")]`
- `pokedex[pokedex["nivel"] > 30 & pokedex["tipo"] == "Fuego"]`
> Con pandas se usa `&` (no `and`) y cada condición va entre paréntesis. Sin los paréntesis el orden de operaciones rompe el filtro.
import pandas as pd
pokedex = pd.DataFrame({"nombre": ["Pikachu", "Charizard", "Bulbasaur"], "nivel": [25, 90, 12]})
print(pokedex.sort_values("nivel", ascending=False)) # del más fuerte al más débil
import pandas as pd
pokedex = pd.DataFrame({"nombre": ["Pikachu", "Charizard", "Bulbasaur"], "nivel": [25, 90, 12]})
pos = pokedex["nivel"].idxmax() # posición del nivel máximo
print("El más fuerte es:", pokedex.loc[pos, "nombre"]) # -> Charizard
| Cosa | Para qué |
|---|---|
df.iloc[i] | fila por posición |
df[df["col"] > x] | filtrar filas por condición |
(c1) & (c2), (c1) | (c2) | combinar condiciones |
df.sort_values("col", ascending=False) | ordenar |
df["col"].idxmax() | posición del valor máximo |
df.loc[pos, "col"] | un valor por etiqueta de fila/columna |
Practicá con los ejercicios de este tema. 💪
⚡ “Saber preguntar es más valioso que saber todas las respuestas.”