Em 4.3 (Dados de chuva ,somar dados) o instrutor usa expressões regulares para tratar os dados que levantam erro porque o float() esta retornando ValueError pois existem linhas onde o número de casos esta como um string vazia ou espaço.
import re
...
if bool(re.search(r'\d, registro['casos'])):
yield yield (f"{uf}-{registro['ano_mes']}",float(registro['casos']))
else:
yield (f"{uf}-{registro['ano_mes']}",0.0)
Só que o arquivo tem mais de 2 milhões de entradas então o python vai acessar registro['casos'] 2 milhões de vezes chamar re.search 2 milhões de vezes e verificar se o retorno da chamada de re.search() é verdadeiro 2 milhões de vezes. Nesse caso é melhor usar try
try:
yield (f"{uf}-{registro['ano_mes']}",float(registro['casos']))
except ValueError:
yield (f"{uf}-{registro['ano_mes']}",0.0)
```
Dessa forma não há a chamada de re.search() a cada linha alias ela se torna dispensável