Powered by AppSignal & Oban Pro

Habitación n: <Nombre>

space_station/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(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

  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)