写在前面:如何将Pyspark 和 Pandas结合起来做机器学习和常规的建模分析呢?

Spark处理大数据,Pandas处理小数据。

pyspark中的DataFrame是分布式的,可以用来处理大规模数据的ETL,处理后的数据collect到单机器节点上,然后交给Pandas dataframe来处理。

虽然Panas是单机处理的,但胜在功能工具比较齐全和完善,处理下小数据的分析和操作还是足够的。


一、基本ETL常规操作

1、从Pandas DataFrame创建 Spark DataFrame

import pandas as pd
pandas_df = pd.DataFrame({
    'a': [1, 2, 3],
    'b': [2., 3., 4.],
    'c': ['string1', 'string2', 'string3'],
    'd': [date(2000, 1, 1), date(2000, 2, 1), date(2000, 3, 1)],
    'e': [datetime(2000, 1, 1, 12, 0), datetime(2000, 1, 2, 12, 0), datetime(2000, 1, 3, 12, 0)]
})
df = spark.createDataFrame(pandas_df)
df

2、Spark DataFrame转Pandas DataFrame

df.toPandas()

注意:PySpark的 DataFrame转成Pandas DataFrame的时候会把所有的数据collect到驱动器,因为Pandas的DataFrame不是分布式的,所以当数据量很大的时候,可能会内存溢出爆掉。

3、当一行数据量很大的时候,竖着展示

df.show(1, vertical=True)

4、查看列名和Schema

#查看列名
df.columns
#查看Schema
df.printSchema()

5、DataFrame的summary描述

#选择需要的列统计其summary描述
df.select("a", "b", "c").describe().show()

二、Pandas UDFs(也称为向量化的UDFs, Vectorized UDFs)在Spark DataFrame中使用

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐