Normalizar valores

Esta seção descreve técnicas para normalizar valores numéricos e de texto nos conjuntos de dados. No cenário ideal, os sistemas de origem são configurados para capturar e enviar dados usando um conjunto consistente de unidades em uma estrutura e um formato padronizados. Na prática, dados de vários sistemas podem apresentar diferenças no nível de precisão usado em dados numéricos ou diferenças em entradas de texto que fazem referência à mesma coisa. Dentro do Cloud Dataprep, é possível usar as seguintes técnicas para abordar alguns dos problemas que talvez você encontre na padronização de unidades e valores e normalização de valores de texto.

Cortar espaços em branco

Você pode cortar os espaços em branco de uma coluna usando uma transformação. Com a função TRIM aplicada aos valores da string, são removidos os espaços em branco inicial e final:

set col: myCol value: TRIM(myCol)

É possível colar as etapas do Wrangle no Transform Builder.

No entanto, para aplicar essa função em todas as colunas no conjunto de dados, você precisa usar a transformação replace:

replace col:* on: `{start}{[ ]}+|{[ ]}+{end}` with:'' global:true

Na transformação acima são usados padrões do Cloud Dataprep, um método mais simples e baseado em macro para referenciar expressões regulares. Consulte Correspondência de texto.

Padronizar unidades

Dica: cada coluna que contém valores numéricos precisa ter uma unidade de medida identificada. No cenário ideal, essa informação é incorporada no nome dos dados da coluna. Se a unidade de medida não está incluída, pode ser difícil interpretar adequadamente os dados.

O Cloud Dataprep não impõe nenhuma unidade a dados importados. Por exemplo, uma coluna de valores em formato de ponto flutuante pode representar centímetros, onças ou qualquer outra unidade de medida. Enquanto os dados estiverem em conformidade com o tipo especificado para a coluna, o Cloud Dataprep poderá trabalhar com eles.

No entanto, essa flexibilidade pode apresentar problemas para os usuários do conjunto de dados. Se os dados não estiverem claramente etiquetados e convertidos em um conjunto padronizado de unidades, os usuários são obrigados a fazer suposições sobre os dados, o que pode levar a um mau uso deles.

Dica: o significado de algumas unidades de medida pode mudar ao longo do tempo. Por exemplo, um dólar americano em 2010 não tem o mesmo valor que um dólar em 2015. Ao padronizar unidades de medida variáveis, considere diferenças relacionadas ao tempo, se possível.

Exemplo: fatores fixos de conversão

Em muitos casos, as unidades podem ser convertidas em outras unidades por meio da aplicação de um fator fixo de conversão a uma coluna de dados. Por exemplo, o conjunto de dados tem as seguintes três colunas de dados medidos:

PessoaAltura_pésPeso_kgComprimento_braço_pol
Jack5'10"92 kg32
Jill5'2"56 kg29
Joe6'3"101 kg35

Os dados acima têm os seguintes problemas:

  1. As colunas Peso e Altura contêm identificadores de unidade, o que força os valores a serem tratados como strings.
  2. Dados métricos (kg) são misturados a dados imperiais (pés e polegadas).
  3. Os dados de altura não são numéricos.

Problema 1: remover unidades

A coluna Weight_kg contém um identificador de unidade. Na importação, esses valores são tratados como strings, o que limita o uso deles para análise.

Etapas:

  1. Na grade de dados, selecione uma instância de " kg". Observe que o espaço também precisa ser selecionado.
  2. Entre os cartões de sugestão, selecione o cartão Substituir.
  3. Ele escolherá automaticamente a substituição por nada, excluindo efetivamente o conteúdo. Para conferir, clique em Modify.
  4. A transformação será semelhante a esta:

    replace col: Weight_kg on: ` kg` with: '' global: true

  5. Adicione-a à receita.
  6. Verifique se o tipo de dados da coluna foi alterado para Integer ou Decimal, dependendo dos valores nele contidos.

Problema 2: converter unidades imperiais em métricas

Para normalizar as unidades imperiais, a primeira questão é facilmente corrigida multiplicando-se os valores de peso por 2,2, uma vez que 1 kg = 2,2 lb:

set col:Weight_kg value:(Weight_kg * 2.2)

Se quiser arredondar o valor para o número inteiro mais próximo, use este comando:

set col:Weight_kg value:ROUND((Weight_kg * 2.2))

Após a fórmula acima ser adicionada à receita, renomeie a coluna: Weight_lbs.

Problema 3: converter pés/pol. em polegadas

A questão final envolve a conversão dos valores de Height_ft em um único valor de polegadas, de modo que esses valores possam ser usados consistentemente com as outras colunas no conjunto de dados.

Na importação, os dados da coluna podem ser semelhantes aos seguintes:

Altura_pés
"5'10""
"5'2""
"6'3""

Etapas:

  1. Selecione as primeiras aspas em uma das entradas.
  2. Nos cartões de sugestão, selecione o cartão Replace.
  3. Selecione a variante que exclui todas aspas da coluna.

  4. O comando completo será semelhante a este:

    replace col: Height_ft on: `"` with: '' global: true

  5. Adicione-o à receita.
  6. As etapas restantes computam o número de polegadas. Multiplique os pés por 12 e, em seguida, adicione o número de polegadas, usando novas colunas de dados.
  7. Selecione aspas simples e escolha o cartão de sugestão Split. Esta etapa de transformação divide a coluna em duas: Height_ft1 e Height_ft2.
  8. Derive o valor em polegadas:

    derive value:((Height_ft1 *12)+Height_ft2)

  9. Adicione-o à receita.
  10. Renomeie a nova coluna: Height_in.
  11. Você pode soltar as outras colunas provisórias.

Fatores dinâmicos de conversão

Em alguns casos, a taxa de conversão entre duas unidades de medida diferentes é dinâmica. Um exemplo comum envolve a falta de correspondência entre moedas. Por exemplo, é possível que um conjunto de dados use dólares americanos (USD) enquanto outro represente valores em Euros.

Em uma coluna

Se você tiver unidades inconsistentes dentro de uma coluna, pode ser possível corrigir esses valores por meio da aplicação de um múltiplo. Por exemplo, você pode determinar se alguns valores estão em quilômetros, em vez de metros, com base em valores muito menores. Multiplicar os valores em quilômetro por 1.000 padronizará as unidades. A fórmula a seguir multiplica por 1.000 todos os valores na coluna Distance que são inferiores a 1.000.

Observe o pressuposto implícito de que não há distâncias em quilômetros que sejam superiores a 1.000.

OBSERVAÇÃO: a inconsistência em unidades de uma coluna indica um problema nos dados de origem ou na forma como os dados da coluna foram modificados após a importação. Sempre que possível, corrija esses problemas nos dados de origem primeiro porque eles podem criar problemas quando os dados forem usados.

Ajustar o nível de precisão

Para valores numéricos que são usados para medição, você pode ajustar o nível de precisão dentro e entre colunas de valores. Veja, por exemplo, estas colunas de dados:

NomeLargura_cmAltura_cm
Objeto 123,355,5512
Objeto 265,2102,4024
Objeto 354,212,22

Acima, você pode ver as seguintes faltas de correspondência relacionadas à precisão:

  • A coluna "Altura" contém um valor com apenas dois dígitos de precisão aritmética na medição.
  • A coluna "Largura" usa dois dígitos de precisão aritmética, enquanto a coluna "Altura" contém mais dígitos de precisão.

Se a precisão das medidas for importante, talvez seja interessante arrendondar o valor para o menor nível de precisão. Nesse caso, dentro da coluna "Altura", esse nível é para dois dígitos significativos após o indicador de decimal. Por exemplo: 12.22. No entanto, em todas as colunas do conjunto de dados, o nível de precisão é para um dígito significativo após o indicador de decimal, já que todos os valores de largura são restritos a esse nível de precisão. Você pode optar por arredondar para quatro dígitos em todas as colunas, mas os valores extras de 0 não refletem com precisão a medida e, portanto, são equivocados.

Você pode usar as seguintes transformações para executar as funções de arredondamento dentro dessas colunas:

set col:Width_cm value:NUMFORMAT(Width_cm '#.#')

set col:Height_cm value:NUMFORMAT(Height_cm '#.#')

OBSERVAÇÃO: no exemplo acima, pressupomos que o número de dígitos significativos permanece fixo nos dados de origem. Se houver variações com o tempo ou o uso da receita de transformação, talvez seja necessário revisar essas etapas de transformação específicas.

OBSERVAÇÃO: com a opção de formatação acima, o zero é removido para valores como 4.0. Como alternativa, você pode usar um formato de '#.0', que sempre insere um zero, mesmo nos casos em que ele não está presente.

Resultados:

NomeLargura_cmAltura_cm
Objeto 123,355,5
Objeto 265,2102,4
Objeto 354,212,2

Ajustar granularidade de dados por agregação

Para hierarquias de dados, você pode usar agregações para ajustar a granularidade dos dados ao nível de agrupamento adequado. Por exemplo, suponha que você queira realizar a junção de um conjunto de dados organizado por produtos individuais com um conjunto organizado por marca. Na maioria dos casos, é necessário agregar os dados do nível do produto no primeiro conjunto de dados ao nível da marca.

OBSERVAÇÃO: quando a agregação é aplicada, uma nova tabela de dados é gerada com as colunas que você selecionou especificamente para inclusão.

Para mais informações, consulte Transformação Aggregate.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Google Cloud Dataprep
Precisa de ajuda? Acesse nossa página de suporte.