Exercício - Resumir dados usando funções agregadas
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 causados por essas tempestades. 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 danos, 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 criados por cada tipo de tempestade. Finalmente, os resultados são ordenados pela nova coluna de dano médio.
Execute a seguinte 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:
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 consultawhere damage > 0 | summarize avg(damage) by EventType
é equivalente asummarize 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:
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:
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.
Execute a seguinte 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:
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.
Tente alterar a consulta para usar as
minif()
funções emaxif()
. Essas funções são semelhantes àsmin()
funções emax()
, 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 função para retornar asumif()
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 função, você pode definir os dados de entrada e os percentis a percentiles()
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.
Execute a seguinte 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:
Veja os resultados. Consegue identificar os danos medianos causados pelas inundações? O valor mediano é igual ao percentil 50.