Übung: Zusammenfassen von Daten mithilfe von Aggregatfunktionen
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.
Führen Sie die folgende Abfrage aus:
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:
Eine präzisere Methode zum Ausführen dieser Abfrage besteht darin, die
avgif()
-Funktion zu verwenden. Diese Funktion ähnelt deravg()
-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 Abfragewhere damage > 0 | summarize avg(damage) by EventType
gleichbedeutend mitsummarize 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:
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:
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.
Führen Sie die folgende Abfrage aus:
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:
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.
Versuchen Sie, die Abfrage so zu ändern, dass sie die
minif()
- undmaxif()
-Funktionen verwendet. Diese Funktionen sind den Funktionenmin()
undmax()
ä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 diesumif()
-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.
Führen Sie die folgende Abfrage aus:
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:
Sehen Sie sich die Ergebnisse an. Können Sie den Medianschaden identifizieren, der durch Überschwemmungen verursacht wurde? Der Medianwert entspricht dem 50. Quantil.