Exercício - Resumir dados usando funções agregadas

Concluído

Usamos um conjunto de dados meteorológicos para comparar o número de certos tipos de eventos de tempestade em diferentes estados dos EUA para o ano de 2007 e visualizamos os resultados. Aqui, você explorará outras funções de agregação para descrever os dados.

Caracterizar tipos de tempestade usando a avg() função

Na última unidade, você analisou o número de tempestades em função do tempo e os danos que essas tempestades causaram. Vejamos outras estatísticas que podem ajudar a caracterizar as próprias tempestades.

Primeiro, você usará a avg() função para calcular os danos médios causados por tempestades em dólares americanos.

A consulta a seguir cria uma coluna calculada usando o extend operador para adicionar todos os valores de dano — neste caso, DamageProperty e DamageCrops — em dólares americanos. Em seguida, a consulta filtra eventos que causaram danos maiores que zero. Em seguida, a consulta resume os danos médios que cada tipo de tempestade criou. Finalmente, os resultados são ordenados pela nova coluna de dano médio.

  1. Execute a seguinte consulta:

    Executar a consulta

    StormEvents
    | extend damage = DamageProperty + DamageCrops
    | where damage > 0
    | summarize avg(damage) by EventType
    | sort by avg_damage
    

    Você deve obter resultados parecidos com a seguinte imagem:

    Captura de tela dos resultados da função de agregação média.

  2. Uma maneira mais concisa de executar essa consulta é usar a avgif() função. Esta função é semelhante à avg() função, mas apenas faz a média dos resultados para os quais o predicado é verdadeiro. A entrada para esta função é a coluna a ser avaliada e a condição na qual avaliar o valor. Assim, a consulta where damage > 0 | summarize avg(damage) by EventType é equivalente a summarize avgif(damage, damage > 0) by EventType.

    Enquanto estamos nisso, vamos limpar os resultados usando a round() função. Esta função arredonda os resultados para o número especificado de dígitos após a vírgula decimal. Neste exemplo, você usará o valor de arredondamento padrão de 0.

    Execute a seguinte consulta:

    Executar a consulta

    StormEvents
    | extend damage = DamageProperty + DamageCrops
    | summarize round(avgif(damage, damage > 0)) by EventType
    | sort by avgif_damage
    

    Você deve obter resultados parecidos com a seguinte imagem:

    Screenshot dos resultados da função de agregação avg, segunda versão.

Encontre extremos usando min() e max()

Vejamos agora os extremos de danos.

Para valores máximos ou mínimos absolutos, use as min() funções e max() agregação. Dentro dessas funções, você tem que definir a coluna na qual calcular o valor mínimo ou máximo e o campo no qual agregar os dados. A consulta a seguir baseia-se na coluna calculada damage anteriormente, adicionando min() e max() valores para a mesma coluna.

  1. Execute a seguinte consulta:

    Executar a consulta

    StormEvents
    | extend damage = DamageProperty + DamageCrops
    | where damage > 0
    | summarize MaxDamage=max(damage), MinDamage=min(damage), AverageDamage=avg(damage) by EventType
    | sort by MaxDamage
    

    Você deve obter resultados parecidos com a seguinte imagem:

    Captura de tela dos resultados da função de agregação máxima.

  2. Veja os resultados. Observe que, para tornar os nomes das colunas mais amigáveis, você renomeou as colunas resumidas dentro da consulta para MinDamage e MaxDamage.

  3. Tente alterar a consulta para usar as minif() funções e maxif() . Essas funções são semelhantes às min() funções e max() , mas só retornam o mínimo ou máximo da expressão fornecida para registros onde o predicado retorna true. Da mesma forma, você pode usar a sumif() função para retornar a soma da expressão fornecida para registros em que o predicado retorna true.

Utilizar a função percentiles()

Até agora, você calculou os valores mínimos, máximos e médios de danos causados por cada evento. Para completar a imagem da distribuição desses valores, pode ser útil calcular os percentis. Usando a percentiles() função, você pode definir os dados de entrada e os percentis a serem calculados. No exemplo a seguir, você calculará os valores de dano dos percentis 5, 20, 50, 80 e 95 para cada tipo de evento.

Os percentis, que representam uma distribuição de frequência, não devem ser confundidos com percentagens, que são uma proporção de um todo.

  1. Execute a seguinte consulta:

    Executar a consulta

    StormEvents
    | extend damage = DamageProperty + DamageCrops
    | where damage > 0
    | summarize percentiles(damage, 5, 20, 50, 80, 95) by EventType
    | sort by EventType asc
    

    Você deve obter resultados parecidos com a seguinte imagem:

    Captura de ecrã dos resultados da função de agregação de percentis.

  2. Veja os resultados. Consegue identificar os danos medianos causados pelas inundações? O valor mediano é igual ao percentil 50.