A coluna 'Valor' é utilizada na contagem das quantidades de 'Casa' e 'Apartamento' somente para facilitar o cálculo da porcentagem, pois queremos apenas a contagem da quantidade 'Casa' e 'Apartamento'. Então escolhemos uma coluna qualquer (nesse caso, 'Valor') e fazemos a contagem dos seus elementos:
grupo1 = dados.groupby('Tipo Agregado')['Valor'] # ['Valor'] é só pra ser uma série e facilitar a contagem. Poderia ser qualquer outra coluna do dataframe
label = grupo1.count().index
valores = grupo1.count().values
É um artifício que trás a solução. Mas como não faz sentido lógico para mim, tentei encontrar uma solução sem usar essa "maladragem". Fiz a conta direto do grupo de dataframes:
#grupo1 = data.groupby('Tipo Agregado')['Valor']
grupo1 = data.groupby('Tipo Agregado') # conjunto de dataframes ('Casa' e 'Apartamento')
#label = grupo1.count().index
label = [tipo_agregado for tipo_agregado,df_tipo_agregado in grupo1]
#valores = grupo1.count().values
valores = [df_tipo_agregado.shape[0] for tipo_agregado,df_tipo_agregado in grupo1]
Compilei e deu o mesmo gráfico, creio que esteja certa essa solução.