Cvičení – shrnutí dat pomocí agregačních funkcí
Použili jsme meteorologickou datovou sadu k porovnání počtu určitých druhů událostí bouře v různých státech USA za rok 2007 a vizualizovali výsledky. Tady prozkoumáte další agregační funkce, které popisují data.
Charakterizuje typy storm pomocí avg()
funkce.
V poslední lekci jste se podívali na počet bouře jako na funkci času a poškození způsobené těmito bouřemi. Pojďme se podívat na další statistiky, které mohou pomoci charakterizovat samotné bouře.
Nejprve použijete avg()
funkci k výpočtu průměrné škody způsobené bouřemi v amerických dolarech.
Následující dotaz vytvoří počítaný sloupec pomocí operátoru extend
pro přidání všech hodnot poškození, v tomto případě DamageProperty a DamageCrops v amerických dolarech. Dotaz pak vyfiltruje události, které způsobily poškození větší než nula. V dalším kroku dotaz shrnuje průměrné poškození vytvořené každým typem bouře. Nakonec se výsledky seřadí podle nového sloupce průměrného poškození.
Spusťte tento dotaz:
StormEvents | extend damage = DamageProperty + DamageCrops | where damage > 0 | summarize avg(damage) by EventType | sort by avg_damage
Měli byste získat výsledky, které vypadají jako na následujícím obrázku:
Stručnější způsob, jak tento dotaz spustit, je použít
avgif()
funkci. Tato funkce je podobnáavg()
funkci, ale pouze průměruje výsledky, pro které je predikát pravdivý. Vstupem této funkce je sloupec pro vyhodnocení a podmínka, pro kterou se má hodnota vyhodnotit.where damage > 0 | summarize avg(damage) by EventType
Dotaz je tedy ekvivalentnísummarize avgif(damage, damage > 0) by EventType
.Zatímco jsme na tom, pojďme výsledky vyčistit pomocí
round()
funkce. Tato funkce zaokrouhlí výsledky na zadaný počet číslic za desetinnou čárkou. V tomto příkladu použijete výchozí hodnotu zaokrouhlení 0.Spusťte tento dotaz:
StormEvents | extend damage = DamageProperty + DamageCrops | summarize round(avgif(damage, damage > 0)) by EventType | sort by avgif_damage
Měli byste získat výsledky, které vypadají jako na následujícím obrázku:
Nalezení extrémních min()
max()
Pojďme se teď podívat na extrémní škody.
U absolutních maximálních nebo minimálních hodnot použijte min()
funkce agregace a max()
funkce agregace. V rámci těchto funkcí musíte definovat sloupec, pro který chcete vypočítat minimální nebo maximální hodnotu a pole, pro které se mají data agregovat. Následující dotaz vychází z dříve počítaného damage
sloupce a přidává min()
hodnoty max()
pro stejný sloupec.
Spusťte tento dotaz:
StormEvents | extend damage = DamageProperty + DamageCrops | where damage > 0 | summarize MaxDamage=max(damage), MinDamage=min(damage), AverageDamage=avg(damage) by EventType | sort by MaxDamage
Měli byste získat výsledky, které vypadají jako na následujícím obrázku:
Podívejte se na výsledky. Všimněte si, že aby byly názvy sloupců přehlednější, přejmenovali jste souhrnné sloupce v dotazu na MinDamage a MaxDamage.
Zkuste dotaz změnit tak, aby používal funkce
minif()
.maxif()
Tyto funkce jsou podobné funkcímmin()
amax()
vrací pouze minimum nebo maximum zadaného výrazu pro záznamy, ve kterých predikát vrátí hodnotu true. Podobně můžete pomocísumif()
funkce vrátit součet zadaného výrazu pro záznamy, ve kterých predikát vrátí hodnotu true.
Použití funkce percentiles()
Zatím jste vypočítali minimální, maximální a průměrné hodnoty škod způsobených každou událostí. K dokončení obrázku rozdělení těchto hodnot může být užitečné vypočítat percentily. percentiles()
Pomocí funkce můžete definovat vstupní data a percentily, které se mají vypočítat. V následujícím příkladu vypočítáte 5. , 20. , 50. , 80. a 95. percentilu poškození pro každý typ události.
Percentily, které představují rozdělení četnosti, by neměly být zaměňovány s procenty, což je podíl celku.
Spusťte tento dotaz:
StormEvents | extend damage = DamageProperty + DamageCrops | where damage > 0 | summarize percentiles(damage, 5, 20, 50, 80, 95) by EventType | sort by EventType asc
Měli byste získat výsledky, které vypadají jako na následujícím obrázku:
Podívejte se na výsledky. Můžete identifikovat medián škod způsobených záplavami? Medián se rovná 50. percentilu.