media = pd.value_counts (pd.cut(dados.Renda,
bins = Classes,
labels = labels,
include_lowest = True
))
media
Como faço para ao invés de contagem, ele traga a média salarial por categoria?
media = pd.value_counts (pd.cut(dados.Renda,
bins = Classes,
labels = labels,
include_lowest = True
))
media
Como faço para ao invés de contagem, ele traga a média salarial por categoria?
Boas Leonardo, tudo bem? Espero que sim!
Inicialmente peço desculpas pela demora em responder.
Apenas com as função cut() e value_counts() do pandas, isso não é possível. Entretanto, existem diversas formas de trazer a média salarial, vou mostrar uma delas:
Primeiro, vamos usar o resultado do cut(), que é um panda.Series para criar mais uma coluna na tabela de dados. Fazemos assim:
classes = [0, 1576, 3152, 7880, 15760, 200000]
labels = ["E","D","C","B","A"]
corte = pd.cut(x=dados.Renda,
bins = classes,
labels = labels,
include_lowest=True)
Se tentarmos verificar o tipo - através da função type() - da variável corte, podemos ver que é uma pandas.Series.
Agora podemos usar essa Series para criar mais uma coluna no DataFrame principal:
dados["Clase Econômica"] = corte
Agora ele está dessa forma:
UF Sexo Idade Cor Anos de Estudo Renda Altura Classe Econômica
0 11 0 23 8 12 800 1.603808 E
1 11 1 23 2 12 1150 1.739790 E
2 11 1 35 8 15 880 1.760444 E
3 11 0 46 2 6 3500 1.783158 C
4 11 1 47 8 9 150 1.690631 E
Como temos mais uma coluna com a classe econômica no nosso DataFrame, vamos usar mais uma função do Pandas para fazer a divisão por classes - a pandas.groupby()
Fazemos isso com :
dados.groupby('Classe Econômica')['Renda'].mean()
A função groupby cria novos DataFrames baseados em um argumento, no caso, 'Classe Econômica'.
Nesse caso, eu tirei as médias na mesma linha acessando a coluna renda e tirando a média pela função mean().
O resultado é:
Classe Econômica
E 846.436177
D 2225.361198
C 4724.410186
B 10517.221763
A 25697.662829
Se quiser saber mais sobre a função pandas.groupby(), deixo o aqui o link para a documentação, que só está disponível em inglês.
Espero ter ajudado e bons estudos!