在 PySpark DataFrame 中刪除包含特定值的行
當我們處理複雜資料集時,我們需要能夠快速處理資料並提供結果的框架。這就是 PySpark 出現的原因。PySpark 是 Apache 社群開發的一個工具,用於即時處理資料。它是一個 API,用於建立 DataFrame 並解釋我們本地 Python 環境中的結果。
DataFrame 可以包含大量資訊/資料,為了保持要解釋的資料的相關性,我們進行必要的更改。在本文中,我們將操作 PySpark DataFrame 並刪除包含特定值的行。這種選擇性刪除資料的操作非常簡單,並且可以證明具有極其重要的意義。
準備資料集以建立 PySpark DataFrame
在開始刪除行之前,我們應該準備一個適當的資料集。藉助此資料集,我們將建立一個 DataFrame。
示例
我們從“pyspark.sql”中匯入了SparkSession。此 SparkSession 充當 Apache Spark 的入口點。此會話管理框架的配置。
我們使用構建器方法建立了一個名為“sparlOBJ”的“SparkSession”物件。提供應用程式名稱不是強制步驟,但它可以幫助程式設計師找到特定的會話。
我們傳遞了一個包含 6 個數字序列的資料集。我們傳遞了一個列標籤列表。我們使用了“SparkSession”例項和“createDataFrame”方法來建立一個“PySpark”DataFrame。
資料集和列名列表作為此方法的引數傳遞,最後我們列印了 DataFrame。
from pyspark.sql import SparkSession
sparkOBJ = SparkSession.builder.appName("SPARK_DSC").getOrCreate()
dataset = [("23", "25", "18", "19"), ("18", "25", "28", "40"),
("15", "18", "45", "11"), ("12", "8", "18", "28"),
("25", "42", "18", "29"), ("45", "50", "17", "11")]
columnsLis = ["Sequence 1", "Sequence 2", "Sequence 3", "Sequence 4"]
dataframe_SPK = sparkOBJ.createDataFrame(dataset, columnsLis)
print("the original data frame is: -")
dataframe_SPK.show()
輸出
the original data frame is: - +----------+----------+----------+----------+ |Sequence 1|Sequence 2|Sequence 3|Sequence 4| +----------+----------+----------+----------+ | 23| 25| 18| 19| | 18| 25| 28| 40| | 15| 18| 45| 11| | 12| 8| 18| 28| | 25| 42| 18| 29| | 45| 50| 17| 11| +----------+----------+----------+----------+
現在我們已經成功準備了一個 DataFrame,讓我們刪除包含特定值的某些行。我們將首先針對單個列。
使用 filter() 函式刪除具有值的行
此函式根據傳遞的條件過濾資料。條件驅動函式的邏輯並指定“要過濾的內容”和“不要過濾的內容”。我們將使用此函式來定位列下的特定值。
示例
在下面的示例中,我們使用了filter()函式來過濾包含值“18”的行。它將只針對“Sequence 1”列下的值。
新的 DataFrame 僅包含“Sequence 1”不等於“18”的行。包含此值的整行已從 DataFrame 中刪除。
from pyspark.sql import SparkSession
sparkOBJ = SparkSession.builder.appName("SPARK_DSC").getOrCreate()
dataset = [("23", "25", "18", "19"), ("18", "25", "28", "40"),
("15", "18", "45", "11"), ("12", "8", "18", "28"),
("25", "42", "18", "29"), ("45", "50", "17", "11")]
columnsLis = ["Sequence 1", "Sequence 2", "Sequence 3", "Sequence 4"]
dataframe_SPK = sparkOBJ.createDataFrame(dataset, columnsLis)
print("the original data frame is: -")
dataframe_SPK.show()
dataframe_SPK.filter(dataframe_SPK["Sequence 1"] != "18").show()
輸出
the original data frame is: - +----------+----------+----------+----------+ |Sequence 1|Sequence 2|Sequence 3|Sequence 4| +----------+----------+----------+----------+ | 23| 25| 18| 19| | 18| 25| 28| 40| | 15| 18| 45| 11| | 12| 8| 18| 28| | 25| 42| 18| 29| | 45| 50| 17| 11| +----------+----------+----------+----------+ +----------+----------+----------+----------+ |Sequence 1|Sequence 2|Sequence 3|Sequence 4| +----------+----------+----------+----------+ | 23| 25| 18| 19| | 15| 18| 45| 11| | 12| 8| 18| 28| | 25| 42| 18| 29| | 45| 50| 17| 11| +----------+----------+----------+----------+
使用 where() 函式刪除行
我們可以藉助“where()”函式執行類似的操作。此函式也圍繞特定條件工作。如果條件為“true”,我們將生成一個新的 DataFrame。讓我們看看它的實現。
示例
dataframe_SPK.where(dataframe_SPK["Sequence 1"] != "18").show()
輸出
+----------+----------+----------+----------+ |Sequence 1|Sequence 2|Sequence 3|Sequence 4| +----------+----------+----------+----------+ | 23| 25| 18| 19| | 15| 18| 45| 11| | 12| 8| 18| 28| | 25| 42| 18| 29| | 45| 50| 17| 11| +----------+----------+----------+----------+
在這裡,“where()”函式的行為與“filter()”函式完全相同。即使語法也相同。這兩種方法可以輕鬆地編織條件並根據它刪除行。這些函式也可以應用於多個列,並且可以過濾更多資料。
示例
dataframe_SPK.filter((dataframe_SPK["Sequence 1"] != "18") &
(dataframe_SPK["Sequence 2"] != "18")
& (dataframe_SPK["Sequence 3"] != "18") &
(dataframe_SPK["Sequence 4"] != "18")).show()
但是,首先分析 DataFrame 然後選擇相關資訊非常重要。
結論
本文重點介紹“PySpark”DataFrame 的基礎知識。我們討論了刪除包含特定資料的行的不同方法。我們使用了filter()函式和where()函式並建立了刪除行的條件。從 DataFrame 中刪除資料是一個關鍵步驟,應該謹慎進行。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP