Habitación n:
Mix.install([
{:explorer, "~> 0.11.1"},
{:kino, "~> 0.19.0"},
{:kino_explorer, "~> 0.1.25"},
{:kino_vega_lite, "~> 0.1.13"},
{:helpers, path: Path.expand("./helpers", __DIR__)}
])
defmodule Room do
require Explorer.DataFrame, as: DF
def verify(answer) do
case answer do
15360 -> Helpers.Messages.correct(
"04.livemd",
"¡Muy bien!, Es el valor buscado."
)
~c"Cerrar" -> Helpers.Messages.info(
"Vas por buen camino, pero debes usar un string utf-8 con comillas dobles. Inténtalo nuevamente."
)
_ -> Helpers.Messages.error(
"No es la respuesta correcta. Inténtalo nuevamente."
)
end
|> Kino.Markdown.new()
end
end
Contexto
El sistema del laboratorio sigue bloqueado…
En la pantalla aparece un nuevo mensaje del Profesor Oak:
> “Un buen Científico de Datos debe ser capaz de responder preguntas simples con datos. > ¿Cuántos Pokémon de cada tipo existen?”
Para contar cuántos Pokémon hay por tipo puedes usar:
conteo =
df
|> DF.frequencies(["Type 1"])
|> DF.sort_by(desc: counts)
Desafío de la habitación
- Crea la variable conteo que contenga la cantidad de Pokémon por Type 1.
- Genera un gráfico de barras con ese conteo.
- Verifica tu respuesta.
require Explorer.DataFrame, as: DF
alias Explorer.Series
alias VegaLite, as: Vl
file = "pokemon.csv"
df = file
|> Kino.FS.file_path()
|> DF.from_csv!()
Contar los elementos
conteo =
df
|> DF.frequencies(["Type 1"])
|> DF.sort_by(desc: counts)
Crear la gráfica
chart =
Vl.new(title: "Cantidad de Pokémon por Tipo")
|> Vl.data_from_values(conteo)
|> Vl.mark(:bar)
|> Vl.encode_field(:x, "Type 1", type: :nominal, title: "Tipo")
|> Vl.encode_field(:y, "counts", type: :quantitative, title: "Cantidad")
Obtener la respuesta
respuesta =
conteo
|> DF.n_rows()
Verificar tu respuesta
Room.verify(respuesta)