pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例

  • Post category:Python

下面是详细讲解“pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例”的完整攻略。

背景知识

在数据处理中,我们经常使用 Pandas 库来处理数据,但是当数据量变得更大时,需要使用分布式处理技术,这时就可以使用 PySpark 进行大规模数据处理。

PySpark 是 Apache Spark 的 Python API,由于 Spark 本身是用 Scala 语言实现的,所以 PySpark 的核心仍然是 Scala 语言编写的,Python 只是提供了一个远程 Python 程序连接到 Spark 集群的接口。PySpark 提供了 Spark SQL 的接口,用于操作结构化数据。

Pandas.DataFrame 转 PySpark.sql.DataFrame

下面是将 Pandas.DataFrame 转换为 PySpark.sql.DataFrame 的示例:

import pandas as pd
from pyspark.sql import SparkSession

# 创建 SparkSession 对象
spark = SparkSession.builder.appName('pandas_to_spark').getOrCreate()

# 创建 Pandas.DataFrame
pdf = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35]
})

# 将 Pandas.DataFrame 转为 PySpark.sql.DataFrame
sdf = spark.createDataFrame(pdf)

# 显示转换后的 PySpark.sql.DataFrame
sdf.show()

运行上述代码后,输出结果如下:

+-------+---+
|   name|age|
+-------+---+
|  Alice| 25|
|    Bob| 30|
|Charlie| 35|
+-------+---+

PySpark.sql.DataFrame 转 Pandas.DataFrame

下面是将 PySpark.sql.DataFrame 转换为 Pandas.DataFrame 的示例:

import pandas as pd
from pyspark.sql import SparkSession

# 创建 SparkSession 对象
spark = SparkSession.builder.appName('spark_to_pandas').getOrCreate()

# 创建 PySpark.sql.DataFrame
sdf = spark.createDataFrame(
    [('Alice', 25), ('Bob', 30), ('Charlie', 35)],
    ['name', 'age']
)

# 将 PySpark.sql.DataFrame 转为 Pandas.DataFrame
pdf = sdf.toPandas()

# 显示转换后的 Pandas.DataFrame
print(pdf)

运行上述代码后,输出结果如下:

       name  age
0     Alice   25
1       Bob   30
2   Charlie   35

总结

以上就是“pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例”的示例代码和说明。在实际应用中,需要根据实际数据集的大小和处理需求选择使用 PySpark 还是 Pandas 进行数据处理,同时需要注意转换前后数据类型和大小的兼容性。