📅  最后修改于: 2023-12-03 15:04:02.067000             🧑  作者: Mango
在 PySpark 中,我们可以使用 DataFrame 对象来处理大数据集。在数据处理过程中,有时需要从 DataFrame 中获取单个值,如数据的最大值、最小值、平均值和总和等等。本文将介绍如何从 PySpark DataFrame 中提取单个值。
首先,我们需要创建一个 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|
+-------+---+
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
同样的方式,你可以计算数据集的其它统计信息,如最大值、最小值、总和等等。
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()
函数来获取数据集中的最后一行数据。
本文介绍了如何从 PySpark DataFrame 中提取单个值。我们介绍了使用 agg()
函数计算数据集的汇总统计信息,以及使用 first()
和 last()
函数获取 DataFrame 中的第一行和最后一行数据。希望这篇文章对你有所帮助。