Powered by AppSignal & Oban Pro

Habitación n: <Nombre>

template/room.template.livemd

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(count) do
    if count == 18 do
        Helpers.Messages.correct(
            "02.livemd",
            "Existen 18 tipos de Pokémon."
        )
    else
        Helpers.Messages.error(
            "La puerta sigue cerrada... Revisa bien los datos y cuenta nuevamente los tipos de Pokémon."
        )
    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

  1. Crea la variable conteo que contenga la cantidad de Pokémon por Type 1.
  2. Genera un gráfico de barras con ese conteo.
  3. 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)