練習 - 使用彙總函式摘要資料

已完成

我們使用了一個氣象資料集來比較 2007 年美國不同州的特定類型風災事件數,並將結果視覺化。 在這裡,您將探索其他彙總函式以描述此資料。

使用 avg() 函式描述風災類型的特性

在上一個單元中,您探討了以時間函式表示的風災數,以及這些風災所造成的損失。 讓我們看看其他可協助描述風災本身特性的統計資料。

首先,您會使用 avg() 函式來計算風災所造成的平均損失 (以美元為單位)。

下列查詢會使用 extend 運算子來建立計算結果欄,以新增所有損失值 (以美元為單位),在此案例中為 DamagePropertyDamageCrops。 然後,該查詢會篩選損失值大於零的事件。 接下來,該查詢會摘要每種風災類型所產生的平均損失。 最後,結果會依新的平均損失資料行排序。

  1. 執行下列查詢:

    執行查詢

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

    您應該會取得如下圖所示的結果:

    平均彙總函式結果的螢幕擷取畫面。

  2. 執行此查詢更簡明的方式是使用 avgif() 函式。 此函式類似於 avg() 函式,但只會針對述詞為 true 的結果求取平均值。 此函式的輸入是要評估的資料行,以及評估值所依據的條件。 因此,查詢 where damage > 0 | summarize avg(damage) by EventType 相當於 summarize avgif(damage, damage > 0) by EventType

    當我們執行此動作時,一起來使用 round() 函式來清除結果。 此函式會將結果四捨五入到小數點後的指定位數。 在此範例中,您將使用預設進位值 0。

    執行下列查詢:

    執行查詢

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

    您應該會取得如下圖所示的結果:

    第二版平均彙總函式結果的螢幕擷取畫面。

使用 min()max() 求極端值

現在讓我們看看損失極端值。

針對絕對最大值或最小值,請使用 min()max() 彙總函式。 在這些函式中,您必須定義要計算最小值或最大值的資料行,以及要彙總資料的欄位。 下列查詢是以先前計算的 damage 資料行為基礎,並為相同的資料行新增 min()max() 值。

  1. 執行下列查詢:

    執行查詢

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

    您應該會取得如下圖所示的結果:

    最大彙總函式結果的螢幕擷取畫面。

  2. 查看結果。 請注意,為了更容易記住資料行名稱,您已將查詢內的摘要資料行重新命名為 MinDamageMaxDamage

  3. 嘗試變更查詢以使用 minif()maxif() 函式。 這些函式類似於 min()max() 函式,但只會針對述詞傳回 true 的記錄,傳回所提供運算式的最小值或最大值。 同樣地,您可以使用 sumif() 函式,針對述詞傳回 true 的記錄,傳回所提供運算式的總和。

使用 percentiles() 函式

到目前為止,您已計算每個事件所造成損失的最小值、最大值和平均值。 若要完成這些值的分佈圖,計算百分位數可能很有用。 使用 percentiles() 函式,您可以定義要計算的輸入資料和百分位數。 在下列範例中,您將計算每個事件類型損失的第 5 個、第 20 個、第 50 個、第 80 個和第 95 個百分位數值。

「百分位數」代表頻率分佈,不應與整體比例的「百分比」混淆。

  1. 執行下列查詢:

    執行查詢

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

    您應該會取得如下圖所示的結果:

    百分位數彙總函式結果的螢幕擷取畫面。

  2. 查看結果。 您是否可以找出水災所造成損失的中間值? 中間值等於第 50 個百分位數。