Pandas Masking
Pandas 是 Python 中的高階資料分析工具或包擴充套件。許多公司和組織需要高質量的資料分析才能大規模使用此工具。
資料分析師必須根據資料型別決定是否使用 pandas。當我們在 SQL 表、電子表格或異構列中有資料時,強烈建議使用 Pandas。
資料可以有序也可以無序,還支援時序資料。在本教程中,讓我們瞭解如何在 pandas 中遮蔽資料。
遮蔽本質上是一種基於一個或多個條件過濾資料的方法。此掩碼的輸出通常是一個物件,該物件根據條件返回為 true
或 false
。
在 Pandas 中使用 dates_data
建立一個虛擬 DataFrame
它可以理解為 DataFrame 的高階 If-Else
方案。但是,我們將首先使用 dates_data
建立一個虛擬 DataFrame 以及幾行。
import pandas as pd
index = pd.date_range("2013-1-1", periods=100, freq="30Min")
dates_data = pd.DataFrame(data=list(range(100)), columns=["value"], index=index)
dates_data["value2"] = "Alpha"
dates_data["value2"].loc[0:10] = "Beta"
程式碼塊建立一個 DataFrame,其中包含日期的行和名為 value
和 value2
的兩列。要檢視資料中的條目,我們使用以下程式碼:
print(dates_data)
輸出:
value value2
2013-01-01 00:00:00 0 Beta
2013-01-01 00:30:00 1 Beta
2013-01-01 01:00:00 2 Beta
2013-01-01 01:30:00 3 Beta
2013-01-01 02:00:00 4 Beta
... ... ...
2013-01-02 23:30:00 95 Alpha
2013-01-03 00:00:00 96 Alpha
2013-01-03 00:30:00 97 Alpha
2013-01-03 01:00:00 98 Alpha
2013-01-03 01:30:00 99 Alpha
正如我們所看到的,我們有 100 個不同的條目,每個條目在 30 分鐘的間隔後設定的時間相同。
建立了兩個名為 value
和 value2
的附加列,其中我們將一些值設定為數字,而將其他值設定為 Alpha
或 Beta
。
使用 Masking
過濾 Pandas 中的資料
遮蔽是 Pandas 中的一個高階概念,分析師試圖根據特定條件過濾資料。
可以根據一個或多個條件過濾此資料。我們將嘗試在這裡詳細探討這些案例中的每一個。
讓我們從過濾資料開始,這樣我們只希望從我們的 DataFramedates_data
中獲取條目。
mask = dates_data["value2"] == "Beta"
print(dates_data[mask])
輸出:
value value2
2013-01-01 00:00:00 0 Beta
2013-01-01 00:30:00 1 Beta
2013-01-01 01:00:00 2 Beta
2013-01-01 01:30:00 3 Beta
2013-01-01 02:00:00 4 Beta
2013-01-01 02:30:00 5 Beta
2013-01-01 03:00:00 6 Beta
2013-01-01 03:30:00 7 Beta
2013-01-01 04:00:00 8 Beta
2013-01-01 04:30:00 9 Beta
我們在 dates_data
DataFrame 的 value2
列中有僅與 Beta
值相關的條目。
通過這種方式,我們可以建立一個掩碼,然後將該掩碼疊加在我們的資料上以過濾資料。這個掩碼也可以理解為過濾掉某些資料的模板。
我們將從 value
列中過濾具有特定範圍值的資料,並且僅從 dates_data
DataFrame 中的 value2
列中過濾 Beta
值。
mask = (dates_data["value2"] == "Beta") & (dates_data["value"] > 3)
print(dates_data[mask])
輸出:
value value2
2013-01-01 02:00:00 4 Beta
2013-01-01 02:30:00 5 Beta
2013-01-01 03:00:00 6 Beta
2013-01-01 03:30:00 7 Beta
2013-01-01 04:00:00 8 Beta
2013-01-01 04:30:00 9 Beta
正如我們在上面的程式碼塊中看到的那樣,我們已經成功過濾了資料,因此我們在 value
列中只有大於 3 的值,而在 value2
列中只有值 Beta
。
因此,藉助 Pandas 中的 Masking
技術,我們可以根據我們的要求並基於一個或多個條件有效地過濾資料。