使用 PySpark 建立新列的 4 種不同方式 - Soner
瞭解如何在 Spark 資料框中建立新列?
我們生活在大資料時代。收集、儲存和傳輸資料變得非常容易。隨著資料量的增加,傳統的工具開始變得不夠用。
當資料太大而無法通過傳統工具和技術進行處理時,我們應該使用允許分散式計算的工具和技術,例如Spark。
Spark 是一種用於大規模資料處理的分析引擎。它讓我們在叢集上分佈資料和計算,以實現顯著的效能提升。
PySpark 是Spark的 Py t hon API。它結合了 Python 的簡單性和 Spark 的效率,這種合作得到了資料科學家和工程師的高度讚賞。
在本文中,我們將介紹使用 PySpark SQL 模組建立新列的 4 種方法。
匯入庫並建立 Spark 會話。
from pyspark.sql import SparkSession from pyspark.sql import functions as F spark = SparkSession.builder.getOrCreate() |
我們還在模組中匯入了函式,因為我們將在建立列時使用其中的一些函式。
下一步是獲取一些資料。我們總是可以通過從外部檔案讀取資料來建立資料框。在本文中,我們將使用該createDataFrame函式建立我們自己的資料框。
data = [ ("John","Doe",28,45000,1,0,1), ("Jane","Doe",26,52000,1,1,1), ("Matt","Anderson",34,62000,1,0,0), ("Ashley","James",30,58000,1,1,0), ("Amber","Murray",24,48000,1,0,0) ] schema = StructType([ StructField("FirstName",StringType(),True), StructField("LastName",StringType(),True), StructField("Age",IntegerType(),True), StructField("Salary", IntegerType(), True), StructField("Checking", IntegerType(), True), StructField("Savings", IntegerType(), True), StructField("CreditCard", IntegerType(), True) ]) df = spark.createDataFrame(data=data, schema=schema) df.show() |
1.建立一個具有常量值的新列
該withColumn函式可用於建立新列。為了建立一個具有常量值的值,我們需要用lit函式指定值,而不管資料型別如何。
df = df.withColumn("IsCustomer", F.lit(1))df.show() |
withColumn函式的第一個引數是新列的名稱,第二個引數指定值。
2.基於其他列建立一個新列
我們可以使用另一列中的值來計算新列的值。該withColumn功能也允許進行計算。
df = df.withColumn( "NumberOfProducts", F.col("Checking") + F.col("Savings") + F.col("CreditCard") )df.select("Checking","Savings","CreditCard","NumberOfProducts").show() |
產品數列是支票、儲蓄和信用卡列的總和。我們需要使用該col函式編寫列名。
3. 建立條件列
我們可以使用該when函式根據一個或多個條件指定新列的值。
讓我們建立一個列來指示客戶是否至少擁有一種產品。如果產品數量為 1 個或多個,則新列的值為 1。否則為 0。
df = df.withColumn( "HasProduct", F.when(F.col("NumberOfProducts") >= 1, 1).else(0) )df.select("NumberOfProducts", "HasProduct").show() |
條件col為when函式的第一個引數。然後,我們為符合給定條件的行指定值。為了為不同的條件指定單獨的值,我們可以將when函式組合為一個鏈式操作。不符合任何給定條件的行的值寫入otherwise部件中。
4.在select函式內建立一列
該select函式可用於從資料框中選擇列。它與 SQL 的 select 語句非常相似。
我們通常在select函式中寫入列的名稱。我們還可以在select函式中進行計算以建立新列。
df_new = df.select( "FirstName", "LastName", "NumberOfProducts", F.lit(3 - df.NumberOfProducts).alias("Potential") )df_new.show() |
Potential |
alias方法用於為派生列或計算列分配名稱。
結論
我們已經介紹了使用 PySpark SQL 模組建立新列的 4 種不同方法。
需要注意的是,Spark 針對大規模資料進行了優化。因此,在處理小規模資料時,您可能看不到任何效能提升。事實上,在處理小型資料集時,Pandas 的效能可能優於 PySpark。
相關文章
- [譯] 在 GitLab 中使用 Issue 皮膚的 4 種方式Gitlab
- Java 常用的 4 種加密方式Java加密
- 多執行緒的建立 兩種方式以及使用建議執行緒
- 陣列去重的幾種方式陣列
- JavaScript中的四種列舉方式JavaScript
- 1117清空陣列的多種方式陣列
- Python 4 種不同的存取檔案騷操作Python
- 遍歷PHP陣列的6種方式PHP陣列
- 陣列的三種初始化方式陣列
- ChatTTS的兩種使用方式TTS
- 一文搞懂四種 WebSocket 使用方式,建議收藏!!!Web
- vue構建專案的三種方式Vue
- 建築工程的3種招標方式
- 用 Python 載入資料的 5 種不同方式Python
- PySpark與GraphFrames的安裝與使用Spark
- pyspark 解析kafka陣列結構資料SparkKafka陣列
- 陣列去重的各種方式對比陣列
- c++遍歷陣列的多種方式C++陣列
- SpringBoot 構建 Docker 映象的最佳 3 種方式Spring BootDocker
- 3 種使用 PostgreSQL 命令的方式SQL
- react 路由的幾種使用方式React路由
- springboot使用webSocket的兩種方式Spring BootWeb
- 使用java建立新的程序Java
- Artisan 命令列 2種實現方式命令列
- [轉]Python格式化字串的4種方式Python字串
- Spring Boot 專案鑑權的 4 種方式Spring Boot
- 如何使用不同的方式更改 Linux 使用者密碼Linux密碼
- php陣列中常用的多種遍歷方式PHP陣列
- 3種常見的Web前端陣列排序方式!Web前端陣列排序
- Linux提權————Linux下三種不同方式的提權技巧Linux
- vue 元件的三種使用方式教程Vue元件
- 多維陣列轉一維陣列(降維的多種方式)陣列
- Java陣列初始化三種方式Java陣列
- 新手引導動畫的4種實現方式動畫
- 區塊鏈支援物聯網的4種方式區塊鏈
- 進入正在執行的Docker容器的4種方式Docker
- Windows從命令列建立文字檔案的兩種方式Windows命令列
- ubuntu建立使用者的兩種方式Ubuntu