Oefening: gegevens samenvatten met statistische functies

Voltooid

We hebben een meteorologische gegevensset gebruikt om het aantal stormgebeurtenissen in verschillende Amerikaanse staten voor het jaar 2007 te vergelijken en de resultaten te visualiseren. Hier verkent u andere aggregatiefuncties om de gegevens te beschrijven.

Stormtypen karakteriseren met behulp van de avg() functie

In de laatste eenheid keek u naar het aantal stormen als een functie van tijd en de schade die deze stormen veroorzaakten. Laten we eens kijken naar andere statistieken die kunnen helpen om de stormen zelf te karakteriseren.

Eerst gebruikt u de avg() functie om de gemiddelde schade te berekenen die wordt veroorzaakt door stormen in Amerikaanse dollars.

Met de volgende query wordt een berekende kolom gemaakt met behulp van de extend operator om alle waarden van schade toe te voegen, in dit geval DamageProperty en DamageCrops, in Amerikaanse dollars. De query filtert vervolgens op gebeurtenissen die schade hebben veroorzaakt die groter zijn dan nul. Vervolgens geeft de query een overzicht van de gemiddelde schade die elk type storm heeft gemaakt. Ten slotte worden de resultaten gesorteerd op de nieuwe kolom met gemiddelde schade.

  1. Voer de volgende query uit.

    De query uitvoeren

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

    U krijgt resultaten die eruitzien als de volgende afbeelding:

    Schermopname van de resultaten van de gemiddelde aggregatiefunctie.

  2. Een beknoptere manier om deze query uit te voeren, is door de avgif() functie te gebruiken. Deze functie is vergelijkbaar met de avg() functie, maar alleen gemiddelden resultaten waarvoor het predicaat waar is. De invoer voor deze functie is de kolom die moet worden geëvalueerd en de voorwaarde waarop de waarde moet worden geëvalueerd. De query where damage > 0 | summarize avg(damage) by EventType is dus gelijk aan summarize avgif(damage, damage > 0) by EventType.

    Terwijl we eraan werken, gaan we de resultaten opschonen met behulp van de round() functie. Met deze functie worden de resultaten afgerond op het opgegeven aantal cijfers na het decimaalteken. In dit voorbeeld gebruikt u de standaard afrondende waarde van 0.

    Voer de volgende query uit.

    De query uitvoeren

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

    U krijgt resultaten die eruitzien als de volgende afbeelding:

    Schermopname van de resultaten van de gemiddelde aggregatiefunctie, tweede versie.

Extremen vinden met behulp van min() en max()

Laten we nu eens kijken naar de schade extremen.

Gebruik de min() functies en max() aggregatiefuncties voor absolute maximum- of minimumwaarden. Binnen deze functies moet u de kolom definiëren waarop de minimum- of maximumwaarde moet worden berekend en het veld waarop de gegevens moeten worden geaggregeerd. De volgende query bouwt voort op de eerder berekende damage kolom en voegt min() waarden toe voor max() dezelfde kolom.

  1. Voer de volgende query uit.

    De query uitvoeren

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

    U krijgt resultaten die eruitzien als de volgende afbeelding:

    Schermopname van de resultaten van de maximale aggregatiefunctie.

  2. Bekijk de resultaten. U ziet dat als u de kolomnamen vriendelijker wilt maken, u de naam van de samengevatte kolommen in de query hebt gewijzigd in MinDamage en MaxDamage.

  3. Wijzig de query om de minif() en maxif() functies te gebruiken. Deze functies zijn vergelijkbaar met de min() functies, max() maar retourneren alleen het minimum of maximum van de opgegeven expressie voor records waarbij het predicaat waar retourneert. Op dezelfde manier kunt u de sumif() functie gebruiken om de som van de opgegeven expressie te retourneren voor records waarbij het predicaat waar retourneert.

De functie percentiles() gebruiken

Tot nu toe hebt u de minimum-, maximum- en gemiddelde waarden berekend van schade die elke gebeurtenis heeft veroorzaakt. Om het beeld van de verdeling van deze waarden te voltooien, kan het handig zijn om de percentielen te berekenen. Met behulp van de percentiles() functie kunt u de invoergegevens en de percentielen definiëren die moeten worden berekend. In het volgende voorbeeld berekent u de 5e, 20e, 50e, 80e en 95e percentielwaarden van schade voor elk gebeurtenistype.

Percentielen, die een frequentieverdeling vertegenwoordigen, mogen niet worden verward met percentages, die een aandeel van een geheel zijn.

  1. Voer de volgende query uit.

    De query uitvoeren

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

    U krijgt resultaten die eruitzien als de volgende afbeelding:

    Schermopname van resultaten van de aggregatiefunctie percentielen.

  2. Bekijk de resultaten. Kunt u de mediaanschade identificeren die wordt veroorzaakt door overstromingen? De mediaanwaarde is gelijk aan het 50e percentiel.