Real datasets have holes. Most models refuse to run with a single gap in them, so before anything else you have to decide what to put in the empty slots. The simplest honest answer: fill every gap with a typical value from the column itself.
Task: write impute(values, strategy) returning a new list with every gap filled, where strategy is either "mean" or "median".
None. Everything else is a number.Which strategy to pick is the real lesson. mean is pulled around by extreme values, so a column with a few huge outliers gets filled with a number that's typical of nothing. median ignores them. Run both on the same list and watch the filler move.