Como validar seus dados com python para a ciência de dados
Quando se trata de dados, ninguém realmente sabe o que é um grande banco de dados contém. Python pode ajudar os cientistas de dados com essa questão. Você deve validar seus dados antes de usá-lo para garantir que os dados é pelo menos perto do que você espera que ele seja.
Conteúdo
O validação faz é garantir que você pode realizar uma análise dos dados e razoavelmente esperar que a análise para ter sucesso. Mais tarde, você precisa executar massagem adicional dos dados para obter o tipo de resultados que você precisa para realizar a sua tarefa.
Descobrir o que está em seus dados
Encontrar duplicatas em seus dados é importante porque você acaba
Passar mais tempo computacional para processar duplicatas, o que retarda seus algoritmos para baixo.
Obtenção de resultados falsos porque duplicatas sobrepeso implicitamente os resultados. Porque algumas entradas aparecem mais de uma vez, o algoritmo considera essas entradas mais importantes.
Como cientista de dados, você quer que seus dados para encantar você, então é hora para obtê-lo falar com você através das maravilhas da pandas, como mostrado no exemplo a seguir:
de lxml pandas importação objectifyimport como pdxml = objectify.parse (aberto ( ``)) XMLData2.xml raiz = xml.getroot () df = pd.DataFrame (colunas = ( `N`, `String`, `booleano`)) para i no intervalo (0,4): obj = root.getchildren () [i] .getchildren () = linha Dict (ZIP ([ `N`, `string`, `booleano`], [obj [0]. texto, obj [1] .text, obj [2] .text])) row_s = pd.Series (linha) row_s.name = IDF = df.append (row_s) search = pd.DataFrame.duplicated (df) print dfprintprint pesquisa [pesquisa == verdadeiro]
Este exemplo mostra como encontrar linhas duplicadas. Ele se baseia em uma versão modificada do XMLData.xml Arquivo, XMLData2.xml, que contém uma linha repetida simples nele. Um arquivo de dados reais contém milhares (ou mais) dos registros e, possivelmente, centenas de repetições, mas este exemplo simples faz o trabalho. O exemplo começa por ler o arquivo de dados na memória. Em seguida, ele coloca os dados em um Quadro de dados.
Neste ponto, os dados são corrompidos porque contém uma linha duplicada. No entanto, você pode se livrar da linha duplicada procurando por ele. A primeira tarefa é criar um objeto de pesquisa contendo uma lista de linhas duplicadas chamando pd.DataFrame.duplicated (). As linhas duplicadas conter uma Verdade ao lado de seu número da linha.
Claro, agora você tem uma lista desordenada de linhas que são e não são duplicados. A maneira mais fácil para determinar quais linhas são duplicadas é criar um índice em que você usa pesquisa == true como a expressão. Segue-se a saída que você vê neste exemplo. Observe que a linha 1 é duplicado na Quadro de dados saída e que a linha 1 também é chamado no pesquisa resultados:
String Número Boolean0 1 Primeiro True1 1 Primeiro True2 2 Segunda False3 3 Terceiro True1 Truedtype: bool
removendo duplicatas
Para obter um conjunto de dados limpo, que deseja remover as duplicatas a partir dele. Felizmente, pandas faz isso por você, como mostrado no exemplo a seguir:
de lxml pandas importação objectifyimport como pdxml = objectify.parse (aberto ( ``)) XMLData2.xml raiz = xml.getroot () df = pd.DataFrame (colunas = ( `N`, `String`, `booleano`)) para i no intervalo (0,4): obj = root.getchildren () [i] .getchildren () = linha Dict (ZIP ([ `N`, `string`, `booleano`], [obj [0]. texto, obj [1] .text, obj [2] .text])) row_s = pd.Series (linha) row_s.name = IDF = df.append (row_s) df.drop_duplicates de impressão ()
Como com o exemplo anterior, você começa criando uma trama de dados que contém o registro duplicado. Para remover o registro errante, tudo o que você precisa fazer é chamada drop_duplicates (). Aqui está o resultado que obtém.
String Número Boolean0 1 Primeiro True2 2 Segunda False3 3 Terceira Verdade
Criar um plano de dados de mapa e dados
Você precisa saber sobre o seu conjunto de dados. UMA mapa de dados é uma visão geral do conjunto de dados. Você usá-lo para detectar potenciais problemas em seus dados, como
variáveis redundantes
possíveis erros
valores ausentes
transformações variáveis
Verificando para estes problemas vai para um plano de dados, que é uma lista de tarefas que você precisa executar para garantir a integridade de seus dados. O exemplo a seguir mostra um mapa de dados, A, com dois conjuntos de dados, B e C:
pandas importação como pddf = pd.DataFrame ({ `A`: [0,0,0,0,0,1,1], `B`: [1,2,3,5,4,2,5], `C`:. [5,3,4,1,1,2,3]}) a_group_desc = df.groupby ( `A`) descrevem () a_group_desc impressão
Neste caso, o mapa de dados usa 0s para a primeira série e 1s para a segunda série. o groupby () função coloca os conjuntos de dados, B e C, em grupos. Para determinar se o mapa de dados é viável, você obter estatísticas usando descrever(). O que você acabar com um conjunto de dados B, série 0 e 1, e dataset C, série 0 e 1, como mostra o seguinte resultado.
Quantidade B CA0 5,000000 3,000000 5.000000mean 2.800000std 1,581139 1,000000 1.788854min 1,00000025 1,00000050% 2,000000 3,000000% 3,00000075% 4,000000 5,000000 5,0000001 4.000000max contagem 2,000000 3,500000 2.000000mean 2.500000std 2,121320 2,000000 0.707107min 2,00000025 2,25000050% 2,750000 3,500000% 2,50000075% 4,250000 5,000000 3,000000 2.750000max
A separação dos dois conjuntos de dados usando casos específicos é a plano de dados. Como você pode ver, as estatísticas dizer-lhe que este plano de dados pode não ser viável porque algumas estatísticas são relativamente distantes.
A saída a partir de descrever() pode ser difícil de ler, mas você pode quebrá-lo em pedaços, como mostrado aqui:
unstacked print = a_group_desc.unstack () desempilhados
utilização desempilhar () cria uma nova apresentação para que você possa vê-lo melhor:
Bcount significa min std 25% 50% 75% maxA0 5 3,0 1,581139 1 2,00 3,0 4,00 51 2 3,5 2,121320 2 2,75 3,5 4,25 5Ccount significa std min 25% 50% 75% maxA0 5 2,8 1,788854 1 1,00 3,0 4,00 51 2 2,5 0,707107 2 2,25 2,5 2,75 3
Claro, você não pode querer todos os dados que descrever() fornece. Veja como você reduzir o tamanho da saída de informações:
imprimir unstacked.loc [: (fatia (None), [ ‘contagem’,’médio’]),]
utilização loc permite obter colunas específicas. Aqui está o resultado final do exemplo mostrando apenas as informações que você precisa absolutamente de tomar uma decisão:
B significa Ccount contar meanA0 5 5 3,0 2,81 2 3,5 2 2,5