Testei outros métodos para resolver a questão 3:
renda_por_perfil = dados.groupby(["sexo_cat", "cor_cat"], observed=True)["Renda"].mean().unstack()
tabela_renda = dados.pivot_table(values='Renda', index='sexo_cat', columns='cor_cat', aggfunc='mean', observed=True)