📜  PySpark – 从 DataFrame 中提取单个值(1)

📅  最后修改于: 2023-12-03 15:04:02.067000             🧑  作者: Mango

PySpark – 从 DataFrame 中提取单个值

在 PySpark 中,我们可以使用 DataFrame 对象来处理大数据集。在数据处理过程中,有时需要从 DataFrame 中获取单个值,如数据的最大值、最小值、平均值和总和等等。本文将介绍如何从 PySpark DataFrame 中提取单个值。

1. 获取数据集

首先,我们需要创建一个 PySpark DataFrame,以便我们可以从中提取单个值。这里我们使用一个简单的数据集作为例子,它包含两列:姓名和年龄。

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("PySparkExample").getOrCreate()

data = [("Alice", 25), ("Bob", 30), ("Charlie", 45), ("David", 35), ("Emily", 28)]
columns = ["Name", "Age"]

df = spark.createDataFrame(data=data, schema=columns)

df.show()

输出结果如下:

+-------+---+
|   Name|Age|
+-------+---+
|  Alice| 25|
|    Bob| 30|
|Charlie| 45|
|  David| 35|
|  Emily| 28|
+-------+---+
2. 提取单个值
2.1. 使用 agg() 函数

agg() 函数可以用于计算 DataFrame 的汇总统计信息,如平均值、总和、最大值和最小值等等。使用 agg() 函数可以很方便地从 DataFrame 中提取单个值。

例如,我们可以使用 agg() 函数计算数据集中的平均年龄:

from pyspark.sql.functions import avg

avg_age = df.agg(avg("Age")).collect()[0][0]
print("Average age is:", avg_age)

这里我们使用了 PySpark 函数 avg() 计算数据集中年龄的平均值,并使用 collect() 函数将结果收集到驱动程序中。最后,我们通过索引方式获取结果,然后打印出来。

输出结果如下:

Average age is: 32.6

同样的方式,你可以计算数据集的其它统计信息,如最大值、最小值、总和等等。

2.2. 使用 first()last() 函数

first()last() 函数分别用于获取 DataFrame 中第一行和最后一行的数据,这也可以用于获取 DataFrame 中的单个值。

例如,我们可以使用 first() 函数来获取数据集中第一行的姓名和年龄:

first_row = df.first()

name = first_row["Name"]
age = first_row["Age"]

print("First row Name is:", name)
print("First row Age is:", age)

输出结果如下:

First row Name is: Alice
First row Age is: 25

同样的方式,你可以使用 last() 函数来获取数据集中的最后一行数据。

3. 结论

本文介绍了如何从 PySpark DataFrame 中提取单个值。我们介绍了使用 agg() 函数计算数据集的汇总统计信息,以及使用 first()last() 函数获取 DataFrame 中的第一行和最后一行数据。希望这篇文章对你有所帮助。