Bom dia Paulo, tudo bem? Espero que sim!
Obrigado por enviar sua dúvida.
A função loc recebe no input os índices do seu DataFrame ou um array de Booleans, que deve possuir o número de linhas igual ao número de linhas do seu DataFrame.
Quando você faz dados.Tipo == residencial, você está comparando cada elemento do seu array dados.Tipo com cada elemento do array residencial, mas eles não tem o mesmo tamanho para serem comparados.
Como dados.Tipo não são os índices do seu DataFrame, você não vai conseguir usá-los diretamente no método loc, mas pode utilizar um conjunto de dados em que os índices sejam a coluna Tipo:
dados_indexados = pd.read_csv('dados/aluguel.csv', sep = ';',index_col="Tipo")
residencial = ['Quitinete','Casa','Apartamento','Casa de Condomínio','Casa de Vila']
Feito isso, você pode usar o loc normalmente, visto que os seus índices são os valores da coluna Tipo:
dados_residencial = dados.loc[residencial]
dados_residencial
Para saber mais sobre o funcionamento da função loc, sugiro pesquisar mais sobre a documentação. Vou deixar link da documentação e de um artigo aqui abaixo:
Artigo
Documentação
Espero que tenha tirado sua dúvida.
Estou à disposição. Bons estudos!