PySpark Fillna()方法介绍及实例

2,107 阅读3分钟

PySpark库是一个通用的、内存中的、分布式处理引擎,可以让你有效地管理几个工作站的数据。 我们还将学习PySpark的fillna()方法,该方法用于用一个自定义的值来填充数据框中的空值,以及它的例子。

什么是PySpark?

PySpark是Spark支持的语言之一。Spark是一种大型数据处理技术,可以处理PB级的数据。PySpark是一个Apache Spark和Python的合作。Python是一种现代高级编程语言,而Apache Spark是一种开源的,专注于集群的计算任务,主要针对速度、易用性和流分析。因为Spark大多是用Scala构建的,与用Python或R编写Spark程序相比,用Scala或Java创建Spark应用程序可以获得更多的功能。 例如,PySpark目前不支持数据集。你可以开发Spark程序来处理数据,并使用PySpark在Spark平台上启动它们。AWS提供管理的EMR和Spark平台。

如果你要做数据科学,PySpark是比Scala更好的选择,因为有很多流行的数据科学库是用Python写的,如NumPy、TensorFlow和Scikit-learn。你可以使用PySpark来处理数据,并在AWS上建立一个EMR集群。PySpark可以从各种文件格式读取数据,包括csv、parquet、json以及数据库。对于较小的数据集,Pandas被利用,而对于较大的数据集,PySpark被采用。与PySpark相比,Pandas的结果更快。根据内存的可用性和数据大小,你可以在PySpark和Pandas之间切换,以提高性能。当需要处理的数据足够大的内存时,一定要使用Pandas而不是PySpark。Spark已经迅速成为业界首选的数据处理技术。然而,它并不是第一个。在Spark之前,处理引擎是MapReduce。

什么是PySpark Fillna()?

PySpark fillna()是一个PySpark方法,用于替换PySpark数据框架模型中单个或多个列中的空值。根据业务需求,这个值可能是任何东西。它可以是0或空字符串和任何常数字面。这个fillna()方法对数据分析很有用,因为它消除了可能导致数据分析困难的空值。

使用Fillna()的例子

from pyspark.sql import SparkSession
spark_session = SparkSession.builder \
    .master('local[1]') \
    .appName('Example') \
    .getOrCreate()

df = spark_session.createDataFrame(
    [
       (1, 'Canada', 'Toronto', None),
       (2, 'Japan', 'Tokyo', 8000000),
       (3, 'India', 'Amritsar', None),
       (4, 'Turkey', 'Ankara', 550000),
    ],
    ['id', 'country', 'city', 'population']
)
df.show()

输出

+---+---------+--------------+-----------+

| id|  country|         city | population|

+---+---------+--------------+-----------+

|  1|       Canada|   Toronto|       null|

|  2|       Japan|      Tokyo|    8000000|

|  3|       India|   Amritsar|       null|

|  4|       Turkey|    Ankara|     550000|

+---+---------+--------------+-----------+

我们现在可以只使用值参数来替换DataFrame中的所有空值。

df.na.fill(value=0).show()

df.na.fill(value=0,subset=["population"]).show()

df.fillna(value=0).show()

+---+---------+--------------+-----------+

| id|  country|         city | population|

+---+---------+--------------+-----------+

|  1|   Canada|       Toronto|          0|

|  2|    Japan|         Tokyo|    8000000|

|  3|    India|      Amritsar|          0|

|  4|   Turkey|        Ankara|     550000|

+---+---------+--------------+-----------+

上述操作将把整数列中的所有空值替换为0。

总结

我们在本节课中讨论了PySpark、PySpark fillna()方法以及它的例子。fillna()方法将DataFrame中的所有空值替换为我们的自定义值。