Data Wrangling (ou data munging) é o processo de limpeza, estruturação e organização de dados brutos para serem usados em ciência de dados, aprendizado de máquina e outras aplicações orientadas a dados, deixando os dados prontos para análise ou modelagem.
O objetivo do data wrangling é garantir que os dados estejam em um formato limpo, consistente e bem estruturado, para que análises mais complexas ou a construção de modelos preditivos sejam feitas de forma eficiente e precisa.
Algumas das principais ferramentas utilizadas são a biblioteca Pandas do Python, o Microsoft Power Query e o conjunto de pacotes Tidyverse da linguagem R.
Limpeza de dados: Identificação e correção de dados faltantes ou inconsistentes (como valores nulos ou duplicados).
Normalização e padronização de valores: Por exemplo, padronizar unidades de medida, como transformar todas as distâncias para metros.
Transformação de dados: Alteração do formato dos dados para torná-los mais úteis (por exemplo, converter uma coluna de datas em uma coluna com o ano, mês e dia separados).
Combinação (ou integração) de dados: União de diferentes fontes de dados (como combinar dados de uma planilha com dados de um banco de dados ou de um arquivo CSV).
Filtragem e seleção de dados relevantes: Remoção de colunas ou linhas irrelevantes para a análise específica.
Detecção de outliers e anomalias: Seleção e remoção ou tratamento de dados discrepantes em relação aos demais (outliers ou ruídos).
A importância de preparar os dados antes da análise ou modelagem se dá por 80% do tempo em projetos de ciência de dados ser gasto com a preparação dos dados, além de que dados brutos são inconsistentes e incompletos e a qualidade dos dados é determinante para o sucesso de qualquer projeto. A preparação inadequada de dados leva a conclusões errôneas, modelos imprecisos e decisões equivocadas.
Na Figura 1, há um exemplo de Data Wrangling manual, nesse caso, um exemplo simples de pré-processamento e limpeza de dados com o Pandas em Python.
Na primeira parte do código (leitura do arquivo CSV e inspeção inicial), o comando pd.read_csv() carrega o arquivo CSV do Titanic em um DataFrame. O comando df.info() exibe informações sobre o DataFrame, como o número de entradas (linhas), colunas e os tipos de dados. O comando df.head() exibe as primeiras 5 linhas do DataFrame para uma visualização inicial dos dados. Essa parte do código é geralmente a primeira coisa que você faz para explorar os dados e entender o que precisa ser limpo ou transformado. Aqui você está apenas visualizando os dados, mas é um passo importante no data wrangling.
Na segunda parte do código (limpeza e imputação básica), na primeira linha lidamos com valores faltantes na coluna “Age” utilizando a média das idades (df[‘Age’].mean()). Isso é uma forma simples de imputação de dados, ou seja, preencher os valores ausentes com um valor calculado (neste caso, a média). O parâmetro inplace=True significa que a alteração será feita no próprio DataFrame, sem a necessidade de atribuir a uma nova variável. Já na segunda linha, há a remoção de duplicatas que possam existir no DataFrame. Isso é importante para evitar que informações repetidas influenciem sua análise ou modelagem.
Na terceira parte (conversão de variáveis categóricas), a coluna “Sex” é uma variável categórica com valores “male” e “female”. Com isso, convertemos essas categorias para valores numéricos (0 para “male” e 1 para “female”) usando o método .map(). Esse tipo de transformação é essencial quando as variáveis categóricas precisam ser convertidas em valores numéricos para serem usadas em modelos de aprendizado de máquina.
Alto custo em tempo: Transformações complexas em grandes volumes de dados podem consumir dias ou semanas de trabalho manual. Processo tedioso e repetitivo leva à fadiga e desmotivação dos profissionais.
Reprodutibilidade difícil: Transformações específicas de problemas e sem documentação são difíceis de replicar em novos dados ou compartilhar com a equipe. Gera inconsistências, dificulta a manutenção e impede auditoria dos processos.
Risco de erros humanos: Tarefas repetitivas aumentam exponencialmente a probabilidade de erros, como funções incorretas, colunas trocadas, estatísticas erradas. Erros passam despercebidos e comprometem toda a análise.
Para lidar com esses problemas, utilizamos a automação do pré-processamento.
A automação do pré-processamento é capaz de automatizar a imputação (por exemplo, preencher valores com a média, mediana ou moda de outros valores), normalização e padronização de valores, além da codificação de variáveis categóricas.
Pode utilizar ferramentas como Scikit-Learn Pipeline, que serve para encadear múltiplas etapas em um objeto único, ColumnTransformer (que aplica transformações específicas por tipo de coluna), AutoML (responsável também por automatizar a seleção e otimização de modelos).
Ela traz os benefícios da eficiência, reduzindo o tempo de execução das tarefas, consistência, eliminando erros comuns por garantir o uso do mesmo procedimento em todos os dados, e a escalabilidade, sendo capaz de manipular e transformar dados em larga escala.
O Scikit-Learn é uma das bibliotecas mais populares e amplamente utilizadas no Python para aprendizado de máquina, com ferramentas para pré-processamento de dados, podendo construir pipelines automatizados. Pipelines são uma sequência de etapas ou processos que transformam dados brutos em dados prontos para análise.
A pipeline do Scikit-Learn garante que os mesmos passos sejam aplicados de forma consistente nos dados de treino e de teste, evitando erros humanos e facilitando a reprodutibilidade.
Existem algumas etapas importantes para a construção do pipeline (utilizando Scikit-Learn):
Imputação: Substitui valores ausentes (NULL) por média, moda ou valor mais frequente.
Padronização / Normalização: Coloca as variáveis numéricas na mesma escala para evitar distorções.
Codificação: Transforma variáveis categóricas (texto) em números, com o OneHotEncoder.
Combinação de Transformações: Usa o ColumnTransformer para aplicar cada transformação nas colunas certas (numéricas e categóricas).
Execução Automatizada: O Pipeline junta tudo em um único fluxo, garantindo que os mesmos passos sejam aplicados em treino e teste.
Na Figura 3, há um exemplo de criação de um pipeline automatizado usando o Scikit-Learn. Na primeira parte do código (pipeline para variáveis numéricas), este tipo de pipeline trata as variáveis numéricas (como ‘Age’ e ‘Fare’) e aplica duas transformações em sequência, a imputação de valores faltantes com a média (SimpleImputer(strategy=’mean’)) e o escalonamento dos valores para que fiquem em uma escala padrão (média = 0 e desvio padrão = 1) com o StandardScaler().
Na segunda parte do código (pipeline para variáveis categóricas), este tipo de pipeline lida com variáveis categóricas (como ‘Sex’ e ‘Embarked’) e aplica a imputação de valores faltantes com o valor mais frequente (moda), com o comando SimpleImputer(strategy=’most_frequent’), além do One-Hot Encoding para transformar as variáveis categóricas em variáveis binárias (usando OneHotEncoder()).
Na terceira parte do código (uso do ColumnTransformer), o ColumnTransformer é usado para aplicar diferentes pipelines a diferentes subconjuntos de colunas no DataFrame. O pipeline num_pipeline (imputação e escalonamento) é aplicado às colunas ‘Age’ e ‘Fare’ (numéricas) e o pipeline cat_pipeline (imputação e one-hot encoding) é aplicado às colunas ‘Sex’ e ‘Embarked’ (categóricas).
Na Figura 4, integramos o pré-processamento no mesmo pipeline com o modelo de RandomForestClassifier. Este pipeline combina o pré-processamento e o modelo de aprendizado de máquina em uma única estrutura. A primeira etapa (‘prep’) aplica as transformações de pré-processamento definidas no ColumnTransformer. A segunda etapa (‘model’) treina o modelo de RandomForestClassifier. E, na última linha, finalmente, o modelo é treinado com os dados de treino. O fit() treina o pipeline completo. Isso significa que, enquanto o modelo é treinado, o pré-processamento (como imputação, escalonamento e codificação) será automaticamente aplicado aos dados de entrada antes de o modelo ser ajustado.
O Data Wrangling garante a qualidade e a confiabilidade das informações, sendo essencial para análises eficazes. A automação com pipelines torna o processo mais rápido, padronizado e livre de erros. Essa prática fortalece os Sistemas de Apoio à Decisão (SAD), permitindo decisões mais precisas e inteligentes.
BERTINI, E. Data Visualization and Data Wrangling: Principles and Practice. Springer, 2021.
HAN, J.; KAMBER, M.; PEI, J. Data Mining: Concepts and Techniques. 4. ed. Elsevier, 2023.
Pandas Documentation. Disponível em: https://pandas.pydata.org/docs/. Acesso em: 4 nov. 2025.
Scikit-learn Documentation. Disponível em: https://scikit-learn.org/stable/. Acesso em: 4 nov. 2025.
Kaggle – Data Cleaning and Preprocessing Tutorials. Disponível em: https://www.kaggle.com/learn. Acesso em: 4 nov. 2025.