Cvičení – shrnutí dat pomocí agregačních funkcí

Dokončeno

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í.

  1. Spusťte tento dotaz:

    Spuštění dotazu

    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:

    Screenshot of avg aggregation function results.

  2. 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:

    Spuštění dotazu

    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:

    Screenshot of avg aggregation function results second version.

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.

  1. Spusťte tento dotaz:

    Spuštění dotazu

    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:

    Screenshot of max aggregation function results.

  2. 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.

  3. Zkuste dotaz změnit tak, aby používal funkceminif().maxif() Tyto funkce jsou podobné funkcím min() a max() 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.

  1. Spusťte tento dotaz:

    Spuštění dotazu

    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:

    Screenshot of percentiles aggregation function results.

  2. Podívejte se na výsledky. Můžete identifikovat medián škod způsobených záplavami? Medián se rovná 50. percentilu.