PySpark SelectExpr()

Pyspark Selectexpr



Sử dụng hàm selectExpr() trong PySpark, chúng ta có thể đánh giá trực tiếp một biểu thức mà không cần tạo bất kỳ BẢNG hoặc XEM nào. Chức năng này có sẵn trong mô-đun pyspark.sql.DataFrame tương tự như phương thức select(). Với selectExpr(), chúng ta có thể hiển thị các cột, áp dụng các hàm trên các cột, đánh giá các biểu thức, thực hiện các phép toán tổng hợp, v.v. Cũng có thể đánh giá/chỉ định nhiều cột cùng một lúc.

Pyspark.sql.DataFrame.selectExpr()

Hàm selectexpr() lấy các cột/tập hợp các biểu thức và trả về DataFrame dựa trên các biểu thức/cột đã chỉ định. Nhiều biểu thức có thể được chỉ định trong hàm này, được phân tách bằng dấu phẩy. Để hiển thị DataFrame, chúng ta có thể sử dụng các hàm show()/collect().

Cú pháp:







pyspark_DataFrame_object.selectExpr(“Cột”/”Biểu thức”)

Ở đây, pyspark_DataFrame_object là Khung dữ liệu PySpark đầu vào.



Tình huống 1: Chọn các Cột

Trong trường hợp này, chúng ta sẽ xem cách chọn các cột cụ thể từ Khung dữ liệu PySpark bằng cách sử dụng hàm selectExpr().



Biểu thức được sử dụng là “current_column as new_name”. Ở đây, current_column là tên cột có trong DataFrame và nó được hiển thị dưới dạng new_name (Bí danh).





Ví dụ:

Tạo một Khung dữ liệu PySpark có tên là “agri_df” với 5 hàng và cột. Lấy cột “Soil_status” và “Soil_Type” làm “STATUS” và “TYPE”.

nhập pyspark

từ pyspark.sql nhập SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Gợi ý Linux' ).getOrCreate()

# dữ liệu canh tác với 5 hàng và 5 cột

nông nghiệp =[{ 'Loại đất' : 'Đen' , 'Irrigation_availability' : 'KHÔNG' , 'Đất cày cấy' : 2500 , 'Soil_status' : 'Khô' ,
'Quốc gia' : 'HOA KỲ' },

{ 'Loại đất' : 'Đen' , 'Irrigation_availability' : 'Đúng' , 'Đất cày cấy' : 3500 , 'Soil_status' : 'Ướt' ,
'Quốc gia' : 'Ấn Độ' },

{ 'Loại đất' : Không có , 'Irrigation_availability' : 'Đúng' , 'Đất cày cấy' : 210 , 'Soil_status' : 'Khô' ,
'Quốc gia' : 'Anh' },

{ 'Loại đất' : 'Khác' , 'Irrigation_availability' : 'KHÔNG' , 'Đất cày cấy' : 1000 , 'Soil_status' : 'Ướt' ,
'Quốc gia' : 'HOA KỲ' },

{ 'Loại đất' : 'Cát' , 'Irrigation_availability' : 'KHÔNG' , 'Đất cày cấy' : 500 , 'Soil_status' : 'Khô' ,
'Quốc gia' : 'Ấn Độ' }]



# tạo khung dữ liệu từ dữ liệu trên

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Lấy Soil_status và Soil_Type là 'STATUS' và 'TYPE'.

agri_df.selectExpr( 'Soil_status dưới dạng STATUS' , 'Soil_Type là TYPE' ).trình diễn()

Đầu ra:



Tình huống 2: Chỉ định Biểu thức điều kiện

Trong trường hợp này, chúng ta sẽ xem cách đánh giá các điều kiện trong hàm selectExpr().

Biểu thức được sử dụng là 'giá trị toán tử có_cột_hiện có'. Ở đây, có_cột là tên cột có trong DataFrame và chúng tôi so sánh từng giá trị trong cột này với chuỗi/giá trị.

Ví dụ 1:

Kiểm tra xem quốc gia có phải là “USA” hay không. Toán tử bằng (=) được sử dụng ở đây.

nhập pyspark

từ pyspark.sql nhập SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Gợi ý Linux' ).getOrCreate()

# dữ liệu canh tác với 5 hàng và 5 cột

nông nghiệp =[{ 'Loại đất' : 'Đen' , 'Irrigation_availability' : 'KHÔNG' , 'Đất cày cấy' : 2500 , 'Soil_status' : 'Khô' ,
'Quốc gia' : 'HOA KỲ' },

{ 'Loại đất' : 'Đen' , 'Irrigation_availability' : 'Đúng' , 'Đất cày cấy' : 3500 , 'Soil_status' : 'Ướt' ,
'Quốc gia' : 'Ấn Độ' },

{ 'Loại đất' : Không có , 'Irrigation_availability' : 'Đúng' , 'Đất cày cấy' : 210 , 'Soil_status' : 'Khô' ,
'Quốc gia' : 'Anh' },

{ 'Loại đất' : 'Khác' , 'Irrigation_availability' : 'KHÔNG' , 'Đất cày cấy' : 1000 , 'Soil_status' : 'Ướt' ,
'Quốc gia' : 'HOA KỲ' },

{ 'Loại đất' : 'Cát' , 'Irrigation_availability' : 'KHÔNG' , 'Đất cày cấy' : 500 , 'Soil_status' : 'Khô' ,
'Quốc gia' : 'Ấn Độ' }]



# tạo khung dữ liệu từ dữ liệu trên

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Kiểm tra xem quốc gia có phải là 'Hoa Kỳ' hay không.

agri_df.selectExpr( 'Quốc gia = 'Hoa Kỳ'' ).trình diễn()

Đầu ra:

Ví dụ 2:

Kiểm tra xem Soil_Type có phải là NULL hay không. Từ khóa NULL kiểm tra xem giá trị có phải là NULL hay không. Nếu nó là null, true được trả về. Nếu không, sai được trả lại. Biểu thức cuối cùng là “Soil_Type IS NULL”

nhập pyspark

từ pyspark.sql nhập SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Gợi ý Linux' ).getOrCreate()

# dữ liệu canh tác với 5 hàng và 5 cột

nông nghiệp =[{ 'Loại đất' : 'Đen' , 'Irrigation_availability' : 'KHÔNG' , 'Đất cày cấy' : 2500 , 'Soil_status' : 'Khô' ,
'Quốc gia' : 'HOA KỲ' },

{ 'Loại đất' : 'Đen' , 'Irrigation_availability' : 'Đúng' , 'Đất cày cấy' : 3500 , 'Soil_status' : 'Ướt' ,
'Quốc gia' : 'Ấn Độ' },

{ 'Loại đất' : Không có , 'Irrigation_availability' : 'Đúng' , 'Đất cày cấy' : 210 , 'Soil_status' : 'Khô' ,
'Quốc gia' : 'Anh' },

{ 'Loại đất' : 'Khác' , 'Irrigation_availability' : 'KHÔNG' , 'Đất cày cấy' : 1000 , 'Soil_status' : 'Ướt' ,
'Quốc gia' : 'HOA KỲ' },

{ 'Loại đất' : 'Cát' , 'Irrigation_availability' : 'KHÔNG' , 'Đất cày cấy' : 500 , 'Soil_status' : 'Khô' ,
'Quốc gia' : 'Ấn Độ' }]



# tạo khung dữ liệu từ dữ liệu trên

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Kiểm tra xem Soil_Type có phải là NULL hay không.

agri_df.selectExpr( 'Soil_Type IS NULL' ).trình diễn()

Đầu ra:

Tình huống 3: Đánh giá các biểu thức

Trong kịch bản này, chúng ta sẽ xem cách chỉ định các biểu thức toán học. Biểu thức được sử dụng là “biểu_thức_toán_cột_hiện_tại”.

Ví dụ:

  1. Hiển thị cột 'Mẫu đất' thực tế.
  2. Thêm 100 vào cột 'Mẫu đất'.
  3. Trừ 100 từ cột 'Mẫu đất'.
  4. Nhân 100 với cột 'Mẫu đất'.
  5. Chia cột 'Mẫu đất' cho 100.
nhập pyspark

từ pyspark.sql nhập SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Gợi ý Linux' ).getOrCreate()

# dữ liệu canh tác với 5 hàng và 5 cột

nông nghiệp =[{ 'Loại đất' : 'Đen' , 'Irrigation_availability' : 'KHÔNG' , 'Đất cày cấy' : 2500 , 'Soil_status' : 'Khô' ,
'Quốc gia' : 'HOA KỲ' },

{ 'Loại đất' : 'Đen' , 'Irrigation_availability' : 'Đúng' , 'Đất cày cấy' : 3500 , 'Soil_status' : 'Ướt' ,
'Quốc gia' : 'Ấn Độ' },

{ 'Loại đất' : Không có , 'Irrigation_availability' : 'Đúng' , 'Đất cày cấy' : 210 , 'Soil_status' : 'Khô' ,
'Quốc gia' : 'Anh' },

{ 'Loại đất' : 'Khác' , 'Irrigation_availability' : 'KHÔNG' , 'Đất cày cấy' : 1000 , 'Soil_status' : 'Ướt' ,
'Quốc gia' : 'HOA KỲ' },

{ 'Loại đất' : 'Cát' , 'Irrigation_availability' : 'KHÔNG' , 'Đất cày cấy' : 500 , 'Soil_status' : 'Khô' ,
'Quốc gia' : 'Ấn Độ' }]



# tạo khung dữ liệu từ dữ liệu trên

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Viết 4 Biểu thức để trừ, cộng, chia và nhân cột Mẫu Anh.

agri_df.selectExpr( 'Đất cày cấy' , 'Mẫu đất - 100' , 'Mẫu đất * 100' , 'Mẫu đất + 100' , 'Mẫu Anh / 100' ).trình diễn()

Đầu ra:

Tình huống 4: Áp dụng các hàm tổng hợp

TỔNG (tên_cột) – Nó đánh giá tổng giá trị trong cột được chỉ định.

NGHĨA LÀ(tên_cột) – Nó đánh giá giá trị trung bình trong cột được chỉ định.

TỐI THIỂU(tên_cột) – Nó trả về phần tử nhỏ nhất trong số tất cả các phần tử trong cột đã chỉ định.

TỐI ĐA(tên_cột) – Nó trả về phần tử lớn nhất trong số tất cả các phần tử trong cột đã chỉ định.

Ví dụ:

  1. Tìm các phần tử tổng, trung bình, đếm, tối thiểu và tối đa của “Mẫu đất”.
  2. Tìm các yếu tố tối thiểu và tối đa trong cột “Soil_status”.
nhập pyspark

từ pyspark.sql nhập SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Gợi ý Linux' ).getOrCreate()

# dữ liệu canh tác với 5 hàng và 5 cột

nông nghiệp =[{ 'Loại đất' : 'Đen' , 'Irrigation_availability' : 'KHÔNG' , 'Đất cày cấy' : 2500 , 'Soil_status' : 'Khô' ,
'Quốc gia' : 'HOA KỲ' },

{ 'Loại đất' : 'Đen' , 'Irrigation_availability' : 'Đúng' , 'Đất cày cấy' : 3500 , 'Soil_status' : 'Ướt' ,
'Quốc gia' : 'Ấn Độ' },

{ 'Loại đất' : Không có , 'Irrigation_availability' : 'Đúng' , 'Đất cày cấy' : 210 , 'Soil_status' : 'Khô' ,
'Quốc gia' : 'Anh' },

{ 'Loại đất' : 'Khác' , 'Irrigation_availability' : 'KHÔNG' , 'Đất cày cấy' : 1000 , 'Soil_status' : 'Ướt' ,
'Quốc gia' : 'HOA KỲ' },

{ 'Loại đất' : 'Cát' , 'Irrigation_availability' : 'KHÔNG' , 'Đất cày cấy' : 500 , 'Soil_status' : 'Khô' ,
'Quốc gia' : 'Ấn Độ' }]



# tạo khung dữ liệu từ dữ liệu trên

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Hoạt động tổng hợp

agri_df.selectExpr( 'SUM(Mẫu Anh)' , 'ĐẠI NGHĨA(Mẫu Anh)' , 'ĐẾM(Mẫu Anh)' , 'AVG(Mẫu Anh)' , 'MIN(Mẫu Anh)' ,
'MAX(Mẫu Anh)' ).trình diễn()

agri_df.selectExpr( 'MIN(Soil_status)' , 'MAX(Soil_status)' ).trình diễn()

Đầu ra:

Phần kết luận

Chúng ta đã thảo luận về hàm selectExpr() lấy các cột/bộ biểu thức và trả về DataFrame dựa trên các biểu thức/cột đã chỉ định. Là một phần của điều này, chúng tôi đã tìm hiểu bốn tình huống chính trong đó selectExpr() được áp dụng. Nhiều biểu thức có thể được chỉ định trong hàm này, được phân tách bằng dấu phẩy. Không cần tạo CHẾ ĐỘ XEM TẠM THỜI để sử dụng hàm selectExpr().