1
resposta

[Projeto] Explorando Novos Dados

Análise descritiva da PNAD 2015 aula 01
Abaixo está um roteiro completo, com código pronto para Colab/Notebook, seguindo cada instrução da aula. Você só precisa ajustar a URL do .csv conforme o documento do curso.

Importação do dataset e criação do data frame

Bibliotecas

import pandas as pd
import numpy as np

Substitua pela URL do CSV indicada no notebook da aula

url = "COLE_AQUI_A_URL_DO_CSV_PNAD_2015"

Leitura do dataset

df = pd.read_csv(url)

Visualização básica

df.head()

Visualização de conteúdo, dimensões e tipos

Dimensões

print(f"Linhas: {df.shape[0]} | Colunas: {df.shape[1]}")

Nomes das colunas

print("Colunas:", list(df.columns))

Tipos de dados

print("\nTipos de dados por coluna:")
print(df.dtypes)

Informações gerais (nulos, memória, etc.)

print("\nResumo .info():")
df.info()

  • Checagem rápida: Verifique se as colunas esperadas (“UF”, “Sexo”, “Cor”, “Anos.de.Estudo”, “Renda”) existem e se os tipos fazem sentido para análise.

Exploração da variável UF e gráfico de barras horizontal
import matplotlib.pyplot as plt

Contagem por UF

uf_counts = df['UF'].value_counts(dropna=False).sort_values(ascending=True)

Tabela de frequências

print("\nFrequências por UF:")
print(uf_counts)

Número de valores distintos

print(f"\nUF distintos: {df['UF'].nunique()}")

Gráfico de barras horizontal

plt.figure(figsize=(8, 10))
uf_counts.plot(kind='barh', color='#4C78A8')
plt.title('Distribuição de registros por UF (PNAD 2015)')
plt.xlabel('Quantidade de registros')
plt.ylabel('UF')
plt.tight_layout()
plt.show()

  • Validação: Se UF vier codificada numericamente, o gráfico ainda é válido. Caso você tenha um dicionário UF→Sigla, pode mapear antes de plotar.

Transformação de Sexo, Cor e Anos.de.Estudo em categóricas
Abaixo está um template de transformação. Ajuste os dicionários conforme as instruções do documento da aula (códigos IBGE).

Copie exatamente os códigos conforme o documento do curso

map_sexo = {
1: 'Masculino',
2: 'Feminino'
}

map_cor = {
1: 'Branca',
2: 'Preta',
3: 'Amarela',
4: 'Parda',
5: 'Indígena'
}

Exemplo de categorização ordinal para anos de estudo.

Ajuste os limites e rótulos conforme o documento da aula.

bins = [-np.inf, 0, 4, 8, 11, 14, 99] # exemplo: 0, 1-4, 5-8, 9-11, 12-14, 15+ anos
labels = [
'Sem instrução',
'1–4 anos',
'5–8 anos',
'9–11 anos',
'12–14 anos',
'15+ anos'
]

Criação das novas colunas categóricas

df['Sexo_cat'] = df['Sexo'].map(map_sexo).astype('category')
df['Cor_cat'] = df['Cor'].map(map_cor).astype('category')
df['AnosEstudo_cat'] = pd.cut(df['Anos.de.Estudo'], bins=bins, labels=labels, ordered=True).astype('category')

Verificação das transformações

print("\nTipos após transformação:")
print(df[['Sexo', 'Sexo_cat', 'Cor', 'Cor_cat', 'Anos.de.Estudo', 'AnosEstudo_cat']].dtypes)

Amostra da nova tabela

df[['UF', 'Sexo_cat', 'Cor_cat', 'Anos.de.Estudo', 'AnosEstudo_cat', 'Renda']].head(10)



  • Observação: “Sexo” e “Cor” são nominais; “AnosEstudo_cat” é ordinal. Se houver códigos “ignorado” ou “não declarado”, inclua mapeamento ou trate como NaN.

Apresentar menor e maior renda com f-string
renda_min = df['Renda'].min()
renda_max = df['Renda'].max()

print(f"Menor Renda observada: R$ {renda_min:,.2f}")
print(f"Maior Renda observada: R$ {renda_max:,.2f}")

  • Dica: Se houver valores negativos ou zero na renda, considere investigar a origem (benefícios, rendas não declaradas, codificação, outliers).

Insights e achados iniciais

  • Distribuição por UF: A quantidade de registros por estado indica a cobertura da amostra e pode refletir tamanhos populacionais e/ou desenho amostral. Estados com menos registros podem exigir cuidado ao comparar métricas de renda média ou anos de estudo.
  • Estrutura dos dados: A tipagem correta (numérico vs. categórico) simplifica agrupamentos e estatísticas, evitando erros em descrições por sexo, cor/raça e escolaridade.
  • Renda mínima e máxima: A presença de valores extremos (outliers) pode distorcer médias; considere usar mediana e intervalos interquartílicos na próxima aula para robustez.
  • Escolaridade (ordinal): A categorização por faixas ajuda a comparar renda por níveis de instrução, suportando análises como “renda mediana cresce com escolaridade?”.
  • Qualidade dos dados: Verifique nulos e códigos especiais (não declarado/ignorado). Se significativo, documente como isso afeta as estatísticas.
1 resposta

Ei! Tudo bem?

Excelente projeto! A análise ficou bem estruturada, seguindo o passo a passo da aula com clareza e boas práticas de análise descritiva. O uso correto de pandas, tipagem categórica, criação de faixas ordinais e validações mostra um ótimo entendimento do processo exploratório de dados.

Continue se dedicando aos estudos e qualquer dúvida, compartilhe.

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