Aqui está uma pequena adaptação do código para uma melhor visualização, basicamente adicionando separadores de milhar e decimal. Usei esse formato para facilitar a análise dos valores, principalmente ao observar o ganho máximo de pessoas com 11 anos de estudo. Me chama a atenção o fato de que pessoas com rendas tão elevadas tenham respondido à pesquisa. Minha percepção que muitas pessoas de alto padrão NÃO participando dessas pesquisas do IBGE.
https://cursos.alura.com.br/forum/topico-erro-mad-no-parametro-aggfunc-459273
renda_dispersao_por_sexo_e_estudo = pd.crosstab(dados['Anos de Estudo'],
dados.Sexo,
aggfunc={'mean', 'median',
'max', 'std'},
values=dados.Renda).round(2)
renda_dispersao_por_sexo_e_estudo.rename(index = anos_de_estudo, inplace = True)
renda_dispersao_por_sexo_e_estudo.rename(columns = sexo, inplace = True)
renda_dispersao_por_sexo_e_estudo = renda_dispersao_por_sexo_e_estudo.applymap(lambda x: f"{x:,.2f}".replace(",", "X").replace(".", ",").replace("X", "."))
renda_dispersao_por_sexo_e_estudo