1
resposta

Erro ao utilizar a lista de funções dentro do aggfunc

Olá senhoras e senhores,

Alguém por favor poderia me ajudar, orientando o que estou fazendo de errado que gera um erro ao tentar utilizar a lista com funções dentro do método aggfunc.

media_renda_estudo_sexo = pd.crosstab(dados['Anos de Estudo'], dados.Sexo, 
                                aggfunc = ['mean', 'median'], 
                                values = dados.Renda)
media_renda_estudo_sexo.rename(index = anos_de_estudo, columns = sexo, inplace = True)

media_renda_estudo_sexo

Retorno que tenho é esse erro abaixo.

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   2897             try:
-> 2898                 return self._engine.get_loc(casted_key)
   2899             except KeyError as err:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: '__dummy__'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
7 frames
/usr/local/lib/python3.7/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   2898                 return self._engine.get_loc(casted_key)
   2899             except KeyError as err:
-> 2900                 raise KeyError(key) from err
   2901 
   2902         if tolerance is not None:

KeyError: '__dummy__'

Desde já agradeço.

1 resposta

Olá Robson, tudo bem? Espero que sim!

O argumento aggfun recebe uma função ou um conjunto de funções através das chaves {} e não em uma lista com colchetes [].

Portanto, para funcionar, troque os colchetes por chaves, da seguinte forma:

media_renda_estudo_sexo = pd.crosstab(dados['Anos de Estudo'], dados.Sexo, 
                                aggfunc = {'mean', 'median'}, 
                                values = dados.Renda)
media_renda_estudo_sexo.rename(index = anos_de_estudo, columns = sexo, inplace = True)

media_renda_estudo_sexo

O resultado do código será o seguinte:

Anos de Estudo('mean', 'Masculino')('mean', 'Feminino')('median', 'Masculino')('median', 'Feminino')
Sem instrução e menos de 1 ano799.495516.202700390
1 ano895.629492.772788400
2 anos931.179529.912788450
3 anos1109.2546.854800500
4 anos1302.33704.2791000788
5 anos1338.65781.391045788
6 anos1448.88833.7331200788
7 anos1465.5830.7511200788
8 anos1639.4933.6151300800
9 anos1508.04868.0221200788
10 anos1731.27925.9191218800
11 anos2117.061286.7915001000
12 anos2470.331682.3118001200
13 anos3195.11911.7324001300
14 anos3706.622226.4625001600
15 anos ou mais6134.283899.5140002800
Não determinados1295.76798.1741200788

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!