使用isin排除法过滤PySpark数据框
Python 是一种面向对象、动态语义、高级、解释型编程语言。快速应用程序开发,以及用作脚本或粘合语言以将现有组件组合在一起,发现其高级内置数据结构,加上动态类型和动态绑定,使其特别有吸引力。
PySpark数据框
数据在 PySpark 数据框中组织成命名列,这些数据框是数据的分布式集合,可以在不同的计算机上运行。这些数据框可以来自现有的弹性分布式数据集 (RDD)、外部数据库或结构化数据文件。
语法 - Isin ()
isin(list_)
list_a 参数采用列的值作为值的列表。
这用于检查或过滤数据框值是否出现在值的列表中,使用 PySpark 的 isin() 或 IN 运算符。
Column 类的 isin() 函数返回布尔值。如果参数的计算值包含表达式的值,则为 True。
示例 1
# Import the necessary libraries from pyspark.sql.functions import col # Create a PySpark DataFrame data = [("Karthik", 25), ("Vijay", 30), ("Kruthik", 35), ("Sricharan", 40), ("Aditi", 45)] df = spark.createDataFrame(data, ["name", "age"]) # Define the list of values to exclude exclusion_list = [25, 30] # Filter out rows where age is in the exclusion list filtered_df = df.filter(~col("age").isin(exclusion_list)) # Display the filtered DataFrame filtered_df.show()
输出
+------+---+ | name|age| +------+---+ |Kruthik| 35| | Sricharan| 40| | Aditi| 45| +------+---+
示例 2
# Import the necessary libraries from pyspark.sql.functions import col # Create a PySpark DataFrame data = [("Karthik", "New York"), ("Vijay", "Chicago"), ("Kruthik", "San Francisco"), ("Sricharan", "Los Angeles"), ("Aditi", "Miami")] df = spark.createDataFrame(data, ["name", "city"]) # Define the list of values to exclude exclusion_list = ["New York", "Chicago", "Miami"] # Filter out rows where city is in the exclusion list filtered_df = df.filter(~col("city").isin(exclusion_list)) # Display the filtered DataFrame filtered_df.show()
输出
+------+--------------+ | name| city| +------+--------------+ |Sricharan | Los Angeles| |Kruthik|San Francisco| +------+--------------+
创建演示数据框
示例 1
# Create a PySpark DataFrame data = [("Alice", "New York"), ("Bob", "Chicago"), ("Charlie", "San Francisco"), ("David", "Los Angeles"), ("Eva", "Miami")] df = spark.createDataFrame(data, ["name", "city"]) # Define the list of values to exclude exclusion_list = ["New York", "Chicago", "Miami"] # Filter out rows where city is in the exclusion list and name is not "David" filtered_df = df.filter(~(col("city").isin(exclusion_list) & (col("name") != "David"))) # Display the filtered DataFrame filtered_df.show()
输出
+------+--------------+ | name| city| +------+--------------+ |David | Los Angeles| |Charlie|San Francisco| +------+--------------+
示例 2
# importing module import pyspark # importing sparksession from pyspark.sql module from pyspark.sql import SparkSession # creating sparksession and giving an app name spark = SparkSession.builder.appName('sparkdf').getOrCreate() # list of students data with null values # we can define null values with none data = [[1, "Karthik", "Sharma"], [2, "Kruthik", "Ballari"], [3, "Vijay", "Kumar"], [4, "Aditi", "Gupta"], [5, "Sricharan", "Sharma"]] # specify column names columns = ['ID', 'NAME', 'Lastname'] # creating a dataframe from the lists of data dataframe = spark.createDataFrame(data, columns) dataframe.show()
输出
+------+---------+----------------+ ID NAME LASTNAME +------+---------+----------------+ 1 |Karthik| Sharma | 2 |Kruthik| Ballari | 3 |Vijay| Kumar | 4 |Aditi| Gupta | 5 |Sricharan| Sharma |
示例 3
以下代码说明了从数据框列中获取名称并显示它们。
filter():此子句用于检查条件并给出结果,两者相似
语法
dataframe.filter(condition)
# Getting Kruthik's name dataframe.filter((dataframe.NAME).isin(['Kruthik'])).show()
输出
+------+---------+----------------+ ID NAME LASTNAME +------+---------+----------------+ 1 |Kruthik| Ballari |
示例 4
以下程序说明了从姓氏为 Sharma 的数据框中获取数据并打印其全名。
where():此子句用于检查条件并给出结果
语法
dataframe.where(condition)
# Fetching names of people whose last name is Sharma dataframe.where((dataframe.college).isin(['Sharma'])).show()
输出
+------+---------+----------------+ ID NAME LASTNAME +------+---------+----------------+ 1 |Karthik| Sharma | 2 |Sricharan| Sharma |
结论
排除法 isin 函数是一种非常有用的方法,可以过滤掉 PySpark 数据框中列值与预定义值列表不匹配的行。它有许多过滤选项,可以在不同的情况下应用。
在处理海量数据集时,此策略特别有用,因为它可以大幅减少需要处理的数据量。数据科学家和分析师可以通过使用排除法 isin 快速过滤掉无关数据,并专注于他们研究所需的特定信息。
广告