Laboratório: Introdução ao Polars Importação e Manipulação de Dados Utilizando Polars
Introdução
Polars é uma biblioteca de manipulação de dados em Rust que foi projetada para ser rápida e eficiente, especialmente quando se trata de lidar com grandes conjuntos de dados. A principal vantagem do Polars em comparação com outras bibliotecas de manipulação de dados, como o pandas, é sua capacidade de processar dados em paralelo, aproveitando múltiplos núcleos de CPU. Isso resulta em operações significativamente mais rápidas, permitindo que analistas e cientistas de dados realizem tarefas complexas de transformação e agregação em grandes volumes de dados com eficiência. Além disso, a API do Polars é inspirada na do pandas, o que facilita a transição para usuários que já estão familiarizados com o ecossistema de Python.
Na ciência de dados, a capacidade de manipular e analisar grandes quantidades de dados de forma rápida e eficiente é crucial para a extração de insights significativos. Polars é particularmente valioso em cenários onde o desempenho é uma preocupação, como em análises em tempo real ou no processamento de grandes fluxos de dados. Sua integração com outras bibliotecas populares, como NumPy e Matplotlib, e sua compatibilidade com arquivos em formatos como CSV e Parquet tornam o Polars uma ferramenta versátil para cientistas de dados que buscam otimizar suas operações e maximizar a eficiência de suas análises. Com a crescente demanda por soluções de dados escaláveis, o Polars se destaca como uma opção promissora no arsenal de ferramentas de ciência de dados.
Objetivos
Ao fim deste laboratório, você deverá:
Ser capaz de importar arquivos tabulares (CSV ou TSV) utilizando a biblioteca Polars. Organizar e transformar tabelas de dados. Compreender operações básicas de manipulação de dados, como seleção, filtragem e ordenação. Calcular estatísticas descritivas e agrupadas utilizando as funções disponíveis no Polars. Criar visualizações informativas usando plotnine. Conjunto de Dados O conjunto de dados “Renda Adulta” contém informações demográficas e econômicas de indivíduos, que são utilizadas para prever se um indivíduo ganha mais ou menos de $50.000 por ano.
Atividade
# Carregando o pacote reticulatelibrary(reticulate)
Warning: pacote 'reticulate' foi compilado no R versão 4.4.3
# Execute o comando Pythonpy_run_string("import pip; from pip._internal.cli.main import main; main(['install', '--upgrade', 'pip'])")
Warning in normalizePath(path.expand(path), winslash, mustWork):
path[1]="\\SMB": O caminho especificado não é válido
Warning in normalizePath(path.expand(path), winslash, mustWork):
path[1]="\\SMB": O caminho especificado não é válido
Warning in normalizePath(path.expand(path), winslash, mustWork): path[1]="\\":
A sintaxe do nome do arquivo, do nome do diretório ou do rótulo do volume está
incorreta
Warning in normalizePath(path.expand(path), winslash, mustWork): path[1]="\\":
A sintaxe do nome do arquivo, do nome do diretório ou do rótulo do volume está
incorreta
Warning in normalizePath(path.expand(path), winslash, mustWork): path[1]="\\":
A sintaxe do nome do arquivo, do nome do diretório ou do rótulo do volume está
incorreta
Requirement already satisfied: pip in \\smb\ra185666\documentos\.virtualenvs\r-reticulate\lib\site-packages (25.2)
# Importando o pacote com seu aliasimport polars as pl
Não esquecer de colocar um comando no código que “printe” o dia e hora que foi compilado o arquivo.
# Data e hora de compilaçãoprint(paste("Arquivo compilado em:", Sys.time()))
Utilizando o arquivo renda_adulta.csv e sabendo que ele não possui cabeçalho, faça a importação do banco de dados utilizando os nomes das colunas conforme apresentado acima e na sequência ali indicada. No momento da importação do arquivo, você deve, também, indicar os tipos de cada uma das colunas. Utilize o fato de que o símbolo ? representa valores faltantes.
Crie um objeto chamado renda_longo, no qual você transforma as colunas capital-gain e capital-loss (formato wide) para formato longo. Os valores destas variáveis devem ser armazenados numa nova coluna chamada Valor e os tipos de valores (gain e loss) devem ser armazenados numa coluna chamada tipo.
# Transformar colunas capital-gain e capital-loss para formato longorenda_longo = renda_adulta.melt( id_vars=[col for col in renda_adulta.columns if col notin ["capital-gain", "capital-loss"]], # Mantém todas as colunas exceto as que serão transformadas value_vars=["capital-gain", "capital-loss"], # Colunas que serão transformadas de wide para long variable_name="tipo", # Nome da nova coluna que armazenará os tipos (gain/loss) value_name="Valor"# Nome da nova coluna que armazenará os valores numéricos)
<string>:2: DeprecationWarning: `DataFrame.melt` is deprecated; use `DataFrame.unpivot` instead, with `index` instead of `id_vars` and `on` instead of `value_vars`
Quais são as médias de horas trabalhadas por classe salarial?
print("Médias de horas trabalhadas por classe salarial:")
Crie um gráfico de barras que apresente o número médio de horas trabalhadas semanalmente em função do nível salarial.
# Gráfico de barras usando apenas polars # Calcular médias manualmentemedias = []categorias = []for income_level in ['<=50K', '>50K']: media = renda_adulta.filter(pl.col('income') == income_level)['hours-per-week'].mean() medias.append(media) categorias.append(income_level)print("Média de Horas Trabalhadas por Semana por Nível Salarial")
Média de Horas Trabalhadas por Semana por Nível Salarial
Existe alguma evidência de discriminação salarial entre gêneros biológicos?
# Análise da distribuição de renda por gênerotabela_genero_renda = renda_adulta.group_by("sex", "income").agg( pl.col("age").count().alias("count"))print("Distribuição de renda por gênero:")
Com base na análise dos dados, existe forte evidência de discriminação salarial entre gêneros biológicos. Os resultados mostram que apenas 10,9% das mulheres estão na faixa de alta renda (acima de US$ 50.000 anuais), enquanto entre os homens essa proporção sobe para 30,5%. Esta disparidade significa que os homens têm quase três vezes mais probabilidade de estarem na categoria salarial mais elevada em comparação com as mulheres. A diferença percentual de aproximadamente 20 pontos percentuais entre os gêneros na faixa de alta renda configura um cenário de significativa desigualdade salarial relacionada ao gênero no conjunto de dados analisado.