Übung: Zusammenfassen von Daten mithilfe von Aggregatfunktionen

Abgeschlossen

Wir haben ein meteorologisches Dataset verwendet, um die Anzahl bestimmter Arten von Sturmereignissen in verschiedenen US-Bundesstaaten für das Jahr 2007 zu vergleichen und haben die Ergebnisse visualisiert. Hier erkunden Sie weitere Aggregationsfunktionen, um die Daten zu beschreiben.

Charakterisieren von Sturmtypen mithilfe der avg()-Funktion

In der letzten Einheit haben Sie sich die Anzahl der Stürme als eine Funktion der Zeit und die durch diese Stürme verursachten Schäden angesehen. Sehen wir uns andere Statistiken an, die dazu beitragen können, die Stürme selbst zu charakterisieren.

Zunächst verwenden Sie die avg()-Funktion, um den durch Stürme verursachten durchschnittlichen Schaden in US-Dollar zu berechnen.

Die folgende Abfrage erstellt eine berechnete Spalte, die den extend-Operator verwendet, um alle Schadenswerte in US-Dollar zu addieren, in diesem Fall DamageProperty und DamageCrops. Die Abfrage filtert dann nach Ereignissen, die Schäden größer als null verursacht haben. Anschließend fasst die Abfrage den durchschnittlichen Schaden zusammen, der von den einzelnen Sturmarten verursacht wurde. Schließlich werden die Ergebnisse nach der neuen Spalte für den durchschnittlichen Schaden sortiert.

  1. Führen Sie die folgende Abfrage aus:

    Abfrage ausführen

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

    Sie sollten Ergebnisse erhalten, die wie in der folgenden Abbildung aussehen:

    Screenshot: Ergebnisse der avg-Aggregationsfunktion

  2. Eine präzisere Methode zum Ausführen dieser Abfrage besteht darin, die avgif()-Funktion zu verwenden. Diese Funktion ähnelt der avg()-Funktion, mittelt aber nur Ergebnisse, für die das Prädikat wahr ist. Die Eingabe für diese Funktion sind die auszuwertende Spalte und die Bedingung, nach der der Wert ausgewertet werden soll. Daher ist die Abfrage where damage > 0 | summarize avg(damage) by EventType gleichbedeutend mit summarize avgif(damage, damage > 0) by EventType.

    Wenn Sie schon dabei sind, können Sie auch die Ergebnisse mithilfe der round()-Funktion bereinigen. Diese Funktion rundet die Ergebnisse auf die angegebene Anzahl von Ziffern nach dem Dezimalkomma. In diesem Beispiel verwenden Sie den Standardrundungswert 0.

    Führen Sie die folgende Abfrage aus:

    Abfrage ausführen

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

    Sie sollten Ergebnisse erhalten, die wie in der folgenden Abbildung aussehen:

    Screenshot der Ergebnisse der aggregierten Durchschnittsfunktion, zweite Version.

Suchen von Extremen mithilfe von min() und max()

Sehen wir uns nun die Schadenextreme an.

Verwenden Sie für absolute Minimum- und Maximumwerte die Aggregationsfunktionen min() und max(). Innerhalb dieser Funktionen müssen Sie die Spalte definieren, für die der Mindest- oder Höchstwert berechnet werden soll, und das Feld, in dem die Daten aggregiert werden sollen. Die folgende Abfrage baut auf der zuvor berechneten Spalte damage auf und fügt min()- und max()-Werte für dieselbe Spalte hinzu.

  1. Führen Sie die folgende Abfrage aus:

    Abfrage ausführen

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

    Sie sollten Ergebnisse erhalten, die wie in der folgenden Abbildung aussehen:

    Screenshot: Ergebnisse der max-Aggregationsfunktion

  2. Sehen Sie sich die Ergebnisse an. Beachten Sie, dass Sie die zusammengefassten Spalten in der Abfrage in MinDamage und MaxDamage umbenannt haben, um sie benutzerfreundlicher zu machen.

  3. Versuchen Sie, die Abfrage so zu ändern, dass sie die minif()- und maxif()-Funktionen verwendet. Diese Funktionen sind den Funktionen min() und max() ähnlich, geben aber den Minimal- und Maximalwert des angegebenen Ausdrucks nur für Datensätze zurück, für die das Prädikat „True“ zurückgibt. Analog dazu können Sie die sumif()-Funktion verwenden, um die Summe des angegebenen Ausdrucks für Datensätze zurückzugeben, bei denen das Prädikat „True“ zurückgibt.

Verwenden der percentiles()-Funktion

Bisher haben Sie die Minimal-, Maximal- und Durchschnittswerte für Schäden berechnet, die durch die einzelnen Ereignisse verursacht wurden. Zum Abschließen des Bilds der Verteilung dieser Werte kann es sinnvoll sein, die Quantile zu berechnen. Mithilfe der percentiles()-Funktion können Sie die Eingabedaten und die zu berechnenden Quantile definieren. Im folgenden Beispiel berechnen Sie den 5., 20., 50., 80. und 95. Quantilwert des Schadens für jeden Ereignistyp.

Quantile, die eine Häufigkeitsverteilung darstellen, sollten nicht mit Prozentsätzen verwechselt werden, die ein Teil eines Ganzen sind.

  1. Führen Sie die folgende Abfrage aus:

    Abfrage ausführen

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

    Sie sollten Ergebnisse erhalten, die wie in der folgenden Abbildung aussehen:

    Screenshot: Ergebnisse der percentiles-Aggregationsfunktion

  2. Sehen Sie sich die Ergebnisse an. Können Sie den Medianschaden identifizieren, der durch Überschwemmungen verursacht wurde? Der Medianwert entspricht dem 50. Quantil.