Logo Zephyrnet

Xử lý trước dữ liệu bằng PySpark - Thao tác lọc

Ngày:

Nếu bạn đã theo dõi loạt bài PySpark của tôi thì bạn sẽ dễ dàng biết được những bước tôi sẽ thực hiện bây giờ. Trước tiên, hãy thảo luận ngắn gọn về chúng:

  1. Đầu tiên, chúng tôi đã nhập SparkSession để bắt đầu Phiên PySpark.
  2. Sau đó, với sự giúp đỡ của getOrCreate () , chúng tôi đã tạo phiên Apache Spark của mình.
  3. Cuối cùng, chúng tôi đã thấy những gì đối tượng tia lửa giữ ở định dạng đồ họa.

Lưu ý: Tôi đã thảo luận chi tiết về các bước này trong bài viết đầu tiên của mình, Bắt đầu với PySpark bằng Python.

from pyspark.sql import SparkSession spark = SparkSession.builder.appName ('filter_operations'). getOrCreate () spark

Đầu ra:

Đọc tập dữ liệu

Trong phần này, chúng ta sẽ đọc và lưu trữ phiên bản của tập dữ liệu giả của chúng tôi với tiêu đề và Lược đồ là True sẽ cung cấp cho chúng ta thông tin chính xác về bảng và các loại cột của nó.

df_filter_pyspark = spark.read.csv ('/ content / part2.2.csv', header = True, invSchema = True) df_filter_pyspark.show ()

Đầu ra:

Đọc tập dữ liệu

Lọc quan hệ

Đây là phần mà chúng ta sẽ thực hiện các kỹ thuật lọc thực hành và trong lọc quan hệ, chúng ta có thể sử dụng các toán tử khác nhau như nhỏ hơn, nhỏ hơn bằng, lớn hơn, lớn hơn bằng và bằng.

df_filter_pyspark.filter ("EmpSalary <= 25000"). show ()

Đầu ra:

Lọc quan hệ

Sự suy luận: Ở đây chúng ta có thể thấy rằng các bản ghi được lọc ra trong đó nhân viên có mức lương thấp hơn hoặc bằng 25000.

Chọn các cột có liên quan thay vì hiển thị tất cả các cột

Đây là một trong những kỹ thuật tiết kiệm chi phí tốt nhất về thời gian thực hiện vì khi làm việc với một tập dữ liệu lớn nếu chúng ta truy xuất tất cả các bản ghi (tất cả các cột) thì sẽ mất nhiều thời gian thực hiện hơn nhưng nếu chúng ta biết bản ghi chúng ta muốn xem thì chúng ta có thể dễ dàng chọn các cột đã chọn như được đề cập bên dưới:

df_filter_pyspark.filter ("EmpSalary <= 25000"). select (['EmpName', 'EmpAge']). show ()

Đầu ra:

Phân tích mã

Vì vậy, đoạn mã trên có thể được chia thành ba bước đơn giản để đạt được mục tiêu:

  1. Thao tác lọc cụ thể này cũng có thể thuộc loại lọc nhiều lần như trong điều kiện đầu tiên, chúng tôi lọc ra các nhân viên dựa trên mức lương, tức là khi lương của nhân viên nhỏ hơn 25000.
  2. Sau đó, đến điều kiện chính mà chúng tôi đang chọn hai cột “Tên trống"Và"Emp-Tuổi”Bằng cách sử dụng chức năng chọn.
  3. Cuối cùng, hiển thị DataFrame được lọc bằng cách sử dụng hiển thị chức năng.

Lưu ý: Tương tự, chúng ta có thể sử dụng các toán tử khác của kiểu quan hệ tùy theo câu lệnh bài toán, chúng ta chỉ cần thay thế toán tử và chúng ta đã sẵn sàng.

Một cách tiếp cận khác để chọn cột

Ở đây, chúng ta sẽ xem xét một cách khác mà chúng ta có thể chọn các cột mong muốn của mình và nhận được kết quả tương tự như trong đầu ra trước đó

Mẹo: Bằng cách nhìn vào dòng mã này, người ta sẽ được nhắc nhở về cách Gấu trúc được sử dụng để lọc các cột.

df_filter_pyspark.filter (df_filter_pyspark ['EmpSalary'] <= 25000) .select (['EmpName', 'EmpAge']). show ()

Đầu ra:

Đầu ra

Sự suy luận: Trong đầu ra, chúng ta có thể thấy rằng chúng ta đã nhận được kết quả giống như chúng ta đã nhận được trong hoạt động bộ lọc trước đó. Thay đổi duy nhất mà chúng tôi có thể thấy ở đây là cách chúng tôi chọn hồ sơ dựa trên mức lương - df_filter_pyspark ['EmpSalary'] <= 25000 ở đây, đầu tiên chúng ta đã lấy đối tượng và nhập tên của cột sau đó cuối cùng chúng ta chỉ cần thêm điều kiện bộ lọc giống như chúng ta đã từng làm trong Gấu trúc.

Lọc logic

Trong phần này, chúng tôi sẽ sử dụng các trường hợp khác nhau để lọc ra các bản ghi dựa trên nhiều điều kiện và đối với điều đó, chúng tôi sẽ có ba trường hợp khác nhau

  1. Điều kiện VÀ
  2. HOẶC điều kiện
  3. KHÔNG điều kiện

Điều kiện "VÀ": Người quen thuộc với SQL hoặc bất kỳ ngôn ngữ lập trình nào mà họ phải xử lý việc thao tác dữ liệu đều nhận thức được thực tế là khi chúng ta sử dụng thao tác AND thì điều đó có nghĩa là tất cả các điều kiện cần phải có. TRUE tức là nếu bất kỳ điều kiện nào sẽ sai thì sẽ không có bất kỳ đầu ra nào được hiển thị.

Lưu ý: Trong PySpark, chúng tôi sử dụng các "&" biểu tượng để biểu thị hoạt động.

df_filter_pyspark.filter ((df_filter_pyspark ['EmpSalary'] <= 30000)
                          & (df_filter_pyspark ['EmpSalary']> = 18000)). show ()

Đầu ra:

Lọc logic

Phân tích mã: Ở đây chúng ta có thể thấy rằng chúng ta đã sử dụng hai điều kiện một trong đó mức lương của nhân viên nhỏ hơn bằng 30000 & (AND) lớn hơn bằng 18000 tức là các bản ghi nằm trong dấu ngoặc này sẽ được hiển thị trong kết quả các bản ghi khác sẽ bị bỏ qua. .

  1. Điều kiện 1: df_filter_pyspark ['EmpSalary'] <= 30000 nơi lương lớn hơn 30000
  2. Điều kiện 2: df_filter_pyspark ['EmpSalary'] <= 18000 nơi lương dưới 18000
  3. Sau đó, chúng tôi sử dụng các "&" hoạt động để lọc ra các bản ghi và cuối cùng hàm show () để đưa ra kết quả.

Điều kiện "HOẶC": Điều kiện này được sử dụng khi chúng ta không muốn quá khó khăn với quá trình lọc, tức là khi chúng ta muốn truy cập các bản ghi nếu bất kỳ điều kiện nào là Đúng không giống như điều kiện AND trong đó tất cả các điều kiện cần phải là True. Vì vậy, hãy cẩn thận chỉ sử dụng điều kiện HOẶC này khi bạn biết một trong hai điều kiện có thể được chọn.

Lưu ý: Trong PySpark, chúng tôi sử dụng "|" biểu tượng để biểu thị HOẶC hoạt động.

df_filter_pyspark.filter ((df_filter_pyspark ['EmpSalary'] <= 30000)
                          | (df_filter_pyspark ['EmpExperience']> = 3)). show ()

Đầu ra:

Đầu ra

Phân tích mã: Nếu một người sẽ so sánh kết quả của VÀ và HOẶC thì họ sẽ nhận được sự khác biệt giữa việc sử dụng cả hai và thời điểm thích hợp để sử dụng nó theo câu lệnh bài toán. Hãy xem cách chúng tôi đã sử dụng phép toán HOẶC:

  1. Điều kiện 1: df_filter_pyspark ['EmpSalary'] <= 30000 ở đây chúng tôi đã loại bỏ một người có mức lương thấp hơn 30000.
  2. Điều kiện 2: df_filter_pyspark ['EmpExperience']> = 3 ở đây chúng tôi đã nhận được hồ sơ trong đó kinh nghiệm của nhân viên lớn hơn 3 năm.
  3. Để kết hợp cả hai điều kiện chúng tôi đã sử dụng "|" (HOẶC) và cuối cùng đã sử dụng hàm hiển thị để đưa ra kết quả dưới dạng DataFrame.

Điều kiện "KHÔNG": Đây là điều kiện mà chúng ta phải chống lại điều kiện tức là chúng ta phải làm mọi thứ khác với điều kiện mà chúng ta đã chỉ định chính nó nếu chúng ta cố gắng đơn giản hóa hơn thì chúng ta có thể nói rằng nếu điều kiện là Sai thì chỉ hoạt động KHÔNG hoạt động.

Lưu ý: Trong PySpark, chúng tôi sử dụng "~" biểu tượng để biểu thị KHÔNG hoạt động.

df_filter_pyspark.filter (~ (df_filter_pyspark ['EmpAge']> = 30)). show ()

Đầu ra:

Sự suy luận: Ở đây, chúng ta có thể thấy nhân viên có tuổi lớn hơn bằng 30 thậm chí không xuất hiện trong danh sách các bản ghi vì vậy rõ ràng là nếu điều kiện là Sai thì chỉ có độ tin cậy của KHÔNG hoạt động

Lưu ý: Trong khi sử dụng NOT (“~”), chúng ta cần lưu ý một điều rằng chúng ta không thể sử dụng nhiều điều kiện ở đây miễn là chúng ta không kết hợp nó với các điều kiện logic như “VÀ” / ”HOẶC”

Trong phần này, chúng tôi sẽ tóm tắt mọi thứ mà chúng tôi đã làm trước đây như khi chúng tôi bắt đầu bằng cách thiết lập môi trường cho việc phân phối PySpark của Python, sau đó chúng tôi bắt đầu thực hiện cả lọc quan hệ và lọc logic trên tập dữ liệu giả của mình.

  1. Đầu tiên, chúng tôi đã hoàn thành các bước bắt buộc của mình là thiết lập Phiên Spark và đọc tập dữ liệu vì đây là những trụ cột của phân tích sâu hơn.
  2. Sau đó, chúng tôi đã biết về các kỹ thuật lọc quan hệ bao gồm các hoạt động thực hành bằng cách sử dụng PySpark DataFrame ở đây chúng tôi đã thảo luận về một toán tử duy nhất và học cách triển khai một cơ sở khác trên cùng một cách tiếp cận.
  3. Cuối cùng, chúng ta chuyển sang loại lọc thứ hai, tức là lọc logic, nơi chúng ta đã thảo luận về cả ba loại của nó: VÀ, HOẶC và Không phải điều kiện.

Đây là repo Link đến bài báo này. Tôi hy vọng bạn thích bài viết của tôi trên Nếu bạn có bất kỳ ý kiến ​​hoặc câu hỏi nào, hãy bình luận bên dưới.

Kết nối với tôi trên LinkedIn để thảo luận thêm.

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định riêng của Tác giả.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?