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')