1
resposta

[Projeto] Mão na massa: Analisando as rendas e suas divisões

Calcule o número de classes para Renda até R$15.000 utilizando a regra de Sturges: lembre-se de filtrar os dados para a faixa de renda requerida antes de calcular o número de classes

#filtrando os dados de renda até 15000 e ordenando pela renda de forma ascendente
dados.query('Renda <= 15000').sort_values('Renda')

#obtendo a quantidade de registros (76219)
n = len(dados.query('Renda <= 15000').sort_values('Renda'))

#importar a biblioteca math para permitir o uso de cálculos matemáticos complexos
import math

#calcular a regra de Sturges para encontrar a quantidade de classes
k = 1 + (10 / 3) * math.log10(n)

#transformando o resultado do k para um inteiro
k = int(k)

print(f'Existem {k} classes para renda até R$15.000,00 utilizando a regra de Sturges')

Crie o histograma da Renda das pessoas responsáveis até R$15.000 seguindo o número de classes calculado anteriormente: com o número de classes calculado anteriormente, segregue os dados em faixas de amplitude fixa e crie a tabela de frequências absolutas e relativas com as faixas definidas. Posteriormente, crie o histograma com o nº de classes definidas.

#criando um dataset a parte só com a renda até 15000
dados_ate_quinze = dados.query('Renda <= 15000').sort_values('Renda').copy().reset_index(drop = True)

#incluindo uma coluna no dataset de classe de renda
dados_ate_quinze['Classe_renda'] = pd.cut(dados_ate_quinze['Renda'], bins = k, include_lowest = True)

#criar tabela de frequência absoluta e relativa
tabela_frequencia = dados_ate_quinze.groupby('Classe_renda', observed = False).size().reset_index(name = 'Frequencia')
tabela_frequencia['Porcentagem'] = (tabela_frequencia['Frequencia'] / len(dados_ate_quinze)) * 100

#gerando gráfico de histograma
sns.histplot(data = dados_ate_quinze, x = 'Renda', bins = k, kde = True)

Qual o percentual de pessoas responsáveis que ganhava até um salário mínimo em 2015 (R$ 788,00)?

print(f'{(dados.query('Renda <= 788')['Renda'].count() / dados['Renda'].count()) * 100:.2f}% dos responsáveis ganham até R$788,00')

Qual a renda máxima de 95% das pessoas responsáveis pelo domicílio na pesquisa?

print(f'A renda máxima de 95% das pessoas é de R${dados['Renda'].quantile(0.95):.2f}')

Qual a renda mínima das 1% mais bem pagas da pesquisa?

print(f'A renda mínima dos 1% mais bem pagos é de R${dados['Renda'].quantile(0.99):.2f}')

Qual a renda máxima de 25%, 50% e 75% das pessoas responsáveis que receberam até R$ 6.000 de rendimento mensal? Construa o boxplot e traga o resumo desses dados.

Construa o boxplot da Renda até o percentil 95% (renda_6k) das pessoas responsáveis por Cat.Sexo e Cat.Cor. Interprete o resultado. Utilize o conjunto de dados gerado na última pergunta do exercício anterior para filtrar os dados e siga a dica para incluir uma 3ª variável na construção de um boxplot, por meio do parâmetro fill.

#obtendo os percentis de quem ganha até 6000
renda_seis = dados[dados['Renda'] <= 6000].sort_values('Renda').reset_index(drop = True)
renda_seis_25 = renda_seis['Renda'].quantile(0.25)
renda_seis_50 = renda_seis['Renda'].quantile(0.50)
renda_seis_75 = renda_seis['Renda'].quantile(0.75)
print(f'A renda máxima de 25% é: {renda_seis_25}, de 50% é: {renda_seis_50}, de 75% é: {renda_seis_75} que receberam até R$6.000,00 de renda mensal.')

#imprimindo boxplot
plt.figure(figsize = (8, 3))
sns.boxplot(x = renda_seis['Renda'])

#gerando dataset de quem ganha até 95% da renda
percentil_95 = dados['Renda'].quantile(0.95)
renda_6k = dados[dados['Renda'] <= percentil_95].sort_values('Renda').reset_index(drop = True)

#imprimindo boxplot
plt.figure(figsize = (10, 5))
sns.boxplot(data = renda_6k, x = 'Renda', y = 'cor_nome', hue = 'sexo_nome')

Qual a idade limite para 20% da população? Construa o histograma acumulado com curva de densidade, definindo a idade limite e quantas pessoas se encaixam nessa porcentagem. Construa o visual e determine a idade limite e quantidade de pessoas dentro da faixa dos 20% mais jovens. Leia a dica sobre como ler os últimos valores de um data.frame utilizando a função tail().

#calculando idade limite para 20% da população - total 76840 - 20% 15368
dados.sort_values('Idade').reset_index(drop = True).iloc[15367]
dados['Idade'].quantile(0.2)

sns.histplot(data = dados, x = 'Idade', bins = 10, cumulative = True, stat = 'proportion', kde = True)
plt.axhline(0.20, color = 'red', linestyle = 'dashed')
1 resposta

Oi, Vinicius! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

O uso da regra de Sturges, pd.cut() para criar classes e os percentis com quantile() mostram um bom domínio da análise exploratória. Muito bom ver sua progressão! Continue assim!

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Para saber mais:

Sugestão de conteúdo:

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!