dataframe常用API(python)

创建dataframe

spark3推荐使用sparksession来创建spark会话,然后利用使用sparksession创建出来的application来创建dataframe。
下面是两种创建方式,效果是相同的:

conf = SparkConf().setAppName('featureEngineering').setMaster('local')
spark = SparkSession.builder.config(conf=conf).getOrCreate()
Samples = spark.read.format('csv').option('header', 'true').load(ResourcesPath)
spark = SparkSession.builder.\
        appName("test").\
        master("local[*]").\
        getOrCreate()

对于所有的spark功能,sparksession类都是入口,所以创建基础的sparksession只需要使用sparksession.builder()。

select

if __name__ == '__main__':
    movieResourcesPath = r"E:\projects\SparrowRecSys-master\src\main\resources\webroot\sampledata\smallratings.csv"
    spark = SparkSession.builder.\
        appName("test").\
        master("local[*]").\
        getOrCreate()
    movieSamples = spark.read.format('csv').option("sep",",").option('header', 'true').load(movieResourcesPath)
    movieSamples.select("movieId").show()

在这里插入图片描述

collect

collect方法将已经存储的dataframe数据从存储器中收集回来,并返回一个数组,包括datafame中的所有行。但是,当数据集很大或者分区数据集很大时,很容易让驱动器崩溃。数据收集到驱动器中进行计算,就不是分布式并行计算了,而是串行计算,会更慢,所以,除了常看小数据,一般吧建议使用。

count

count方法用来计算数据集dataframe中行的个数,返回dataframe集合的行数。

if __name__ == '__main__':
    movieResourcesPath = r"E:\projects\SparrowRecSys-master\src\main\resources\webroot\sampledata\smallratings.csv"
    spark = SparkSession.builder.\
        appName("test").\
        master("local[*]").\
        getOrCreate()
    movieSamples = spark.read.format('csv').option("sep",",").option('header', 'true').load(movieResourcesPath)
    print(movieSamples.count())

在这里插入图片描述

limit

limit()限制输出,只保留Top_N,不是Action操作。

if __name__ == '__main__':
    movieResourcesPath = r"E:\projects\SparrowRecSys-master\src\main\resources\webroot\sampledata\smallratings.csv"
    spark = SparkSession.builder.\
        appName("test").\
        master("local[*]").\
        getOrCreate()
    movieSamples = spark.read.format('csv').option("sep",",").option('header', 'true').load(movieResourcesPath)
    movieSamples.limit(5).show()

效果和下面的代码是一样的

if __name__ == '__main__':
    movieResourcesPath = r"E:\projects\SparrowRecSys-master\src\main\resources\webroot\sampledata\smallratings.csv"
    spark = SparkSession.builder.\
        appName("test").\
        master("local[*]").\
        getOrCreate()
    movieSamples = spark.read.format('csv').option("sep",",").option('header', 'true').load(movieResourcesPath)
    movieSamples.show(5)

在这里插入图片描述

distinct

distinct方法用来去除数据集中的重复项,返回一个不包含重复记录的dataframe。这里的重复项指的是两行的数据完全相同。
该方法和dropDuplicates()方法不传入指定字段时的结果相同。

if __name__ == '__main__':
    movieResourcesPath = r"E:\projects\SparrowRecSys-master\src\main\resources\webroot\sampledata\test.csv"
    spark = SparkSession.builder.\
        appName("test").\
        master("local[*]").\
        getOrCreate()
    movieSamples = spark.read.format('csv').option("sep",",").option('header', 'true').load(movieResourcesPath)
    movieSamples1=movieSamples.distinct()
    movieSamples1.show()

filter

filter方法是一个常用的方法,用条件来过滤数据集,如果想选择某列中大于或小于某数的数据,就可以使用filter方法。

if __name__ == '__main__':
    movieResourcesPath = r"E:\projects\SparrowRecSys-master\src\main\resources\webroot\sampledata\test.csv"
    spark = SparkSession.builder.\
        appName("test").\
        master("local[*]").\
        getOrCreate()
    movieSamples = spark.read.format('csv').option("sep",",").option('header', 'true').load(movieResourcesPath)
    movieSamples1=movieSamples.filter("id>3")
    movieSamples1.show()

在这里插入图片描述

flatMap&map

flatMap是对dataframe中的数据进行整体操作的一个特殊方法。flatMap方法首先将函数应用于此数据集的所有元素,然后将结果展平,从而返回一个新的数据集。

map方法可以对dataframe数据集中的数据进行逐个操作,他与flatMap的不同之处在于,flatMap是将数据集中的数据作为一个整体去处理,之后再对其中的数据做计算,map则是直接对数据集中的数据做单独处理。

在这里插入代码片

groupBy & agg

groupBy 方法是将传入的数据进行分组,依据是作为参数传入的计算方法。一般与agg配合使用,例如groupBy(“id”).agg({“vale”:“max”}表示按照id进行分组,在每一组中选出Vale最大的值。max可替换成其他的函数,比如max,min,mean,sum,count等等。

if __name__ == '__main__':
    movieResourcesPath = r"E:\projects\SparrowRecSys-master\src\main\resources\webroot\sampledata\test.csv"
    spark = SparkSession.builder.\
        appName("test").\
        master("local[*]").\
        getOrCreate()
    movieSamples = spark.read.format('csv').option("sep",",").option('header', 'true').load(movieResourcesPath)
    movieSamples.groupBy("id").agg({"vale":"max"}).show()

在这里插入图片描述

drop

drop方法从数据集中删除某列,然后返回dataFrame类型。

if __name__ == '__main__':
    movieResourcesPath = r"E:\projects\SparrowRecSys-master\src\main\resources\webroot\sampledata\smallratings.csv"
    spark = SparkSession.builder.\
        appName("test").\
        master("local[*]").\
        getOrCreate()
    movieSamples = spark.read.format('csv').option("sep",",").option('header', 'true').load(movieResourcesPath)
    movieSamples.drop("moiveId")

sort

sort方法对已有的dataframe重新排序,并将重新排序后的数据生成一个新的dataframe

if __name__ == '__main__':
    movieResourcesPath = r"E:\projects\SparrowRecSys-master\src\main\resources\webroot\sampledata\test.csv"
    spark = SparkSession.builder.\
        appName("test").\
        master("local[*]").\
        getOrCreate()
    movieSamples = spark.read.format('csv').option("sep",",").option('header', 'true').load(movieResourcesPath)
    movieSamples.sort("id").show()

在这里插入图片描述

F.()

数据类型转换

F.col("movieId").cast(IntegerType())


F.avg
F.count

归一化

MinMaxScaler(inputCol="avgRatingVec", outputCol="scaleAvgRating")

管道

pipelineStage = [ratingScaler]
featurePipeline = Pipeline(stages=pipelineStage)
movieProcessedFeatures = featurePipeline.fit(movieFeatures).transform(movieFeatures)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值