Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Esta conforme ?

import pandas as pd
from pathlib import Path

class AnaliseDataset:
    def __init__(self, caminho_arquivo):
        self.caminho_arquivo = Path(caminho_arquivo)
        self.dados = pd.DataFrame()

    def ler_dados(self):
        if not self.caminho_arquivo.exists():
            print("Arquivo não encontrado: {}".format(self.caminho_arquivo))
            return
        try:
            self.dados = pd.read_csv(self.caminho_arquivo)
            print("Arquivo lido com sucesso: {}".format(self.caminho_arquivo))
        except Exception as e:
            print("Erro ao ler o arquivo: {}".format(e))

    def tabela_qualitativas_ordinais(self):
        if "Anos de Estudo" in self.dados.columns:
            anos = pd.DataFrame(sorted(self.dados['Anos de Estudo'].unique()), columns=['Anos de Estudo'])
            print("\nTabela - Qualitativa Ordinal (Anos de Estudo):")
            print(anos.to_string(index=False))
        else:
            print("Coluna 'Anos de Estudo' não encontrada.")

    def tabela_qualitativas_nominais(self):
        for col in ['Sexo','Cor','UF']:
            if col in self.dados.columns:
                tabela = pd.DataFrame(sorted(self.dados[col].dropna().unique()), columns=[col])
                print("\nTabela - Qualitativa Nominal ({0}):".format(col))
                print(tabela.to_string(index=False))

                if col == 'Sexo':
                    tabela[col] = tabela[col].map({0:'Masculino',1:'Feminino'}).fillna(tabela[col])
                    print("\nTabela - Qualitativa Nominal (Sexo):")
                    print(tabela.to_string(index=False))
            else:
                print("Coluna '{}' não encontrada.".format(col))

    def tabela_quantitativas_discretas(self):
        if 'Idade' in self.dados.columns:
            idade = self.dados['Idade']
            print("\nVariável Quantitativa Discreta (Idade)")
            print('De %s até %s anos' % (idade.min(), idade.max()))
        else:
            print("Coluna 'Idade' não encontrada.")

    def tabela_quantitativas_continuas(self):
        for col in ['Renda', 'Altura']:
            if col in self.dados.columns:
                tabela = pd.DataFrame({'Mínimo {}:'.format(col): [self.dados[col].min()],
                                            'Máximo {}:'.format(col): [self.dados[col].max()]}, index=[col])

                print("\nVariável Quantitativa Contínua ({})".format(col))
                print(tabela.to_string(index=True))

                if col == 'Altura':
                    print("\nTabela - Quantitativa Contínua (Altura):")
                    print(" De {:.2f} até {:.2f} metros".format(self.dados[col].min(), self.dados[col].max()))
            else:
                print("Coluna '{}' não encontrada.".format(col))


    def informacoes (self):
        self.tabela_qualitativas_ordinais()
        self.tabela_qualitativas_nominais()
        self.tabela_quantitativas_discretas()
        self.tabela_quantitativas_continuas()


# --- USO ---
analise = AnaliseDataset("caminho_do_arquivo")
analise.ler_dados()
analise.informacoes()

Além disso, tenho uma dúvida: pretendo trabalhar tanto com back-end quanto com análise de dados. Posso aproveitar meu conhecimento de back-end em Python para análise de dados e, da mesma forma, aplicar conceitos de análise de dados para aprimorar meu trabalho em back-end? Por exemplo, utilizando POO neste curso, pelo menos o básico, sem aprofundar em conceitos como herança e polimorfismo por enquanto, mas planejando incorporá-los ao longo da minha carreira para treinar especificamente esses conceitos?

1 resposta
solução!

Oi, Samuel.

O seu código tá muito bem estruturado para um estudante que deseja unir os dois mundos. Você aplicou corretamente a classificação das variáveis estatísticas solicitadas no curso, e a organização em classes demonstra que você já possui uma base sólida de lógica de programação.

O uso da biblioteca pathlib e o tratamento de exceções com try/except são boas práticas que evitam erros comuns na leitura de arquivos.

Pontos de destaque:

  • Encapsulamento: Agrupar as funções de análise dentro da classe AnaliseDataset facilita a reutilização do código em outros conjuntos de dados.
  • Mapeamento de dados: O uso do .map() para transformar os códigos numéricos da variável "Sexo" em rótulos legíveis é exatamente o que se espera em uma análise exploratória.
  • Classificação correta: Você separou adequadamente o que é discreto (contagem, como idade em anos inteiros) do que é contínuo (medidas com decimais, como altura e renda).

Uma pequena sugestão:

No método tabela_qualitativas_nominais, você imprime a tabela duas vezes para a coluna "Sexo" (uma com os números originais e outra mapeada). Para deixar a saída mais limpa, você pode realizar o mapeamento antes de imprimir, garantindo que o usuário veja apenas a informação final tratada.

Integração: Back-end e Data Science

A resposta para sua dúvida é um sim definitivo. A intersecção entre essas áreas é o que chamamos frequentemente de Engenharia de Dados ou Analytics Engineering.

Trabalhar com análise de dados exige, muitas vezes, a limpeza de grandes volumes de informações vindas de bancos de dados ou APIs. Sua familiaridade com Programação Orientada a Objetos (POO) permite que você crie bibliotecas próprias para automatizar tarefas repetitivas. Em vez de escrever scripts soltos, você constrói sistemas de análise que são fáceis de testar e escalar.

Um desenvolvedor back-end que entende de estatística consegue:

  • Monitorar a performance de aplicações com métricas precisas (percentis de tempo de resposta em vez de apenas médias).
  • Identificar padrões de comportamento de usuários para prever picos de carga no servidor.
  • Trabalhar na implementação de algoritmos de recomendação ou busca dentro do próprio sistema.

Sobre o uso de POO:

Usar classes agora, mesmo sem herança ou polimorfismo, é um excelente exercício. Começar pelo básico (atributos e métodos) ajuda a fixar como os dados fluem dentro de um objeto. À medida que seus projetos crescerem, a necessidade de herança aparecerá naturalmente.

Continue com essa mentalidade. O mercado valoriza profissionais "híbridos" que conseguem tanto construir a estrutura de um sistema quanto extrair inteligência dos dados que trafegam nele.

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