Como comparar 2 conjuntos de dados com criação de perfil do Pandas
A visualização é a pedra angular da EDA. Ao enfrentar um conjunto de dados novo e desconhecido, a inspeção visual nos permite ter uma ideia das informações disponíveis, desenhar alguns padrões em relação aos dados e diagnosticar vários problemas que talvez precisemos resolver. A esse respeito, o Pandas Profiling tem sido o canivete indispensável no cinto de ferramentas de todos os cientistas de dados. Em meus artigos anteriores, mencionei como a criação de perfil de pandas pode ser útil durante a execução de EDA de série temporal , mas e se pudéssemos comparar dois conjuntos de dados?
Quantos de nós começamos o desenvolvimento de um projeto de ciência de dados e lutamos para entender o quanto estamos obtendo de nossas transformações e engenharia de dados?
E é exatamente isso que abordarei na postagem do blog de hoje — como aproveitar a mais famosa linha única de código EDA para impulsionar o processo de desenvolvimento da ciência de dados e melhorias na qualidade dos dados. Farei um tour de como aproveitar a funcionalidade de relatório de comparação Pandas-Profiling para impulsionar seu processo de EDA e ilustrar seu potencial na produção de transformações mais rápidas e inteligentes em nossos dados.
O conjunto de dados usado neste artigo pode ser encontrado no Kaggle, o conjunto de dados HCC de Miriam Santos (Licença: CC0: Domínio público ). Para este caso de uso específico, introduzi artificialmente alguns problemas adicionais de qualidade de dados para mostrar a você como a visualização pode nos ajudar a detectá-los e nos guiar para sua mitigação eficiente. Todos os códigos e exemplos estão disponíveis no GitHub e, caso você precise se atualizar um pouco, certifique-se de verificar este blog para tirar o pó de suas habilidades de criação de perfis de pandas. Então, vamos ao nosso caso de uso!
Pandas Profiling: EDA na ponta dos seus dedos
Começaremos criando o perfil do conjunto de dados HCC e investigando os problemas de qualidade de dados sugeridos no relatório:
pip install pandas-profiling==3.5.0
Alerts shown in Pandas Profiling Report (scheenshot by author)
- Duplicatas : 4 linhas duplicadas em dados;
- Constante : Valor constante “999” em 'O2';
- Alta Correlação : Vários recursos marcados como altamente correlacionados;
- Ausente : Valores ausentes em 'Ferritina'.
Removendo Linhas Duplicadas : Dependendo da natureza do domínio, pode haver registros que tenham os mesmos valores sem que isso seja um erro. No entanto, considerando que algumas das características neste conjunto de dados são bastante específicas e se referem a medidas biológicas de um indivíduo (por exemplo, “Hemoglobina”, “MCV”, “Albumina”), é improvável que vários pacientes relatem os mesmos valores exatos para todas as características . Vamos começar descartando essas duplicatas dos dados:
Removendo recursos irrelevantes : Os valores constantes em O2 também refletem uma verdadeira inconsistência nos dados e não parecem conter informações valiosas para o desenvolvimento do modelo. Em cenários de casos de uso reais, seria um bom padrão iterar com um domínio ou especialistas de negócios, mas para o propósito deste exemplo de caso de uso, iremos em frente e os retiraremos da análise:
Imputação de dados ausentes : o conjunto de dados HCC também parece extremamente suscetível a dados ausentes. Uma maneira simples de resolver esse problema (evitando remover registros incompletos ou recursos inteiros) é recorrer à imputação de dados. Usaremos imputação média para preencher as observações ausentes, pois é a técnica de imputação estatística mais comum e simples e geralmente serve como método de linha de base:
Comparação lado a lado: iterações mais rápidas e inteligentes em seus dados
Agora a parte divertida! Depois de implementar o primeiro lote de transformações em nosso conjunto de dados, estamos prontos para avaliar seu impacto na qualidade geral de nossos dados. É aqui que a funcionalidade de relatório de comparação de perfis de pandas é útil. O código abaixo descreve como começar:
Veja como os dois relatórios são mostrados na comparação:
O que podemos entender imediatamente de nossa visão geral do conjunto de dados? O conjunto de dados transformado contém um recurso categórico a menos (“O2” foi removido), 165 observações (contra as 171 originais contendo duplicatas) e nenhum valor ausente (em contraste com as 79 observações ausentes no conjunto de dados original).
Mas como essas transformações impactaram a qualidade de nossos dados? E quão boas foram essas decisões?
Vamos mergulhar fundo nisso. No que diz respeito aos registos duplicados, não houve impacto particular no que diz respeito às distribuições de variáveis e padrões de conjuntos de dados após a queda. A imputação de valores faltantes que foi feita é uma história diferente.
Como esperado, não há observações faltantes depois que a imputação de dados foi realizada. Observe como a contagem de nulidade e a matriz mostram as diferenças entre as duas versões dos dados: nos dados transformados, “Ferritina” agora tem 165 valores completos e nenhum espaço em branco pode ser encontrado na matriz de nulidade.
No entanto, podemos inferir algo mais do relatório de comparação. Se fôssemos inspecionar o histograma “Ferritina”, veríamos como a imputação de valores com a média distorceu a distribuição original dos dados, o que é indesejável.
Isso também é observado através da visualização de interações e correlações, onde surgem padrões de interação malucos e valores de correlação mais altos na relação entre “Ferritina” e os demais recursos.
Isso mostra que o relatório de comparação não é apenas útil para destacar as diferenças introduzidas após as transformações de dados, mas também fornece várias pistas visuais que nos levam a insights importantes sobre essas transformações: neste caso, uma estratégia de imputação de dados mais especializada deve ser considerada .
Pensamentos finais
Ao longo deste pequeno caso de uso, abordamos a utilidade de comparar dois conjuntos de dados no mesmo relatório de criação de perfil para destacar as transformações de dados realizadas durante o EDA e avaliar seu impacto na qualidade dos dados.
No entanto, as aplicações dessa funcionalidade são infinitas, pois a necessidade de (re)iterar a avaliação de recursos e a inspeção visual é vital para soluções centradas em dados . Desde a comparação de distribuições de conjuntos de treinamento , validação e teste ou controle de qualidade de dados até casos de uso mais avançados, como para o processo de geração de dados sintéticos .
Fabiana Clemente , CDO da YData
Acelerando a IA com dados aprimorados.