pyspark.sql.
DataFrame
对象的方法
aggr=sparkdf.agg({"a":"max","b":"min"}) #对列的聚合操作 print aggr.collect() print sparkdf.approxQuantile('a',[0.25,0.5,0.75],0) #对某列求分位数,只是近似值 print sparkdf.colRegex("\w+") #spark version 2.3 选择列名符合正则表达式的列 print sparkdf.columns #列名列表 print sparkdf.corr('a','b') #求两列相关系数 print sparkdf.count() #求总行数 print sparkdf.cov('a','b') #求两列的协方差 sparkdf.createOrReplaceTempView("people") #为df创建一个视图 print spark.sql("select * from people").collect() print sparkdf.crosstab('a','b').collect() #求两列的交叉表,值是记录的条数 print sparkdf.describe(['a','b']).collect() #求某些列的信息,计数、最大值、最小值、平均值、标准差 sparkdf.distinct().show() #删除重复行 sparkdf.drop(['a']).show() #删除a列 sparkdf.dropDuplicates(['a','b']).show() #删除重复行,只考虑某些列的重复 sparkdf.dropna().show() #删除包含空值的行 print sparkdf.dtypes sparkdf.fillna(0).show() #用某值填充空值 sparkdf.filter('a > 1').show() #按条件筛选某些行 sparkdf.where('a > 1').show() #按条件筛选某些行 print sparkdf.first() #只能取一行 不能加参数取多行! print sparkdf.head(10) #取前几行 def func(x): print x.a print sparkdf.foreach(func) #对每一行操作,但是返回值的总是个None不知道为什么这样设计 print sorted(sparkdf.groupBy('a').agg({'b': 'mean'}).collect()) #先按a列分组,再对b列求均值 sparkdf.intersect(sparkdf).show() #求两个df的交集 sparkdf1 = sparkdf.alias('sparkdf1') #给df一个别名 sparkdf.join(sparkdf1, sparkdf.a == sparkdf1.a, 'outer').show() #同sql里的join操作 sparkdf.limit(1).show() #限制只取前几行 sparkdf.orderBy("a", ascending=False).show() #按照a列降序排 sparkdf.replace(2,200).show() #把值当中所有的2,替换成200
print sparkdf.sample(withReplacement=True, fraction=0.5, seed=3).collect() #有放回抽样 print sparkdf.sampleBy("a", fractions={0: 0.1, 1: 0.2}, seed=0).collect() #按a列分层抽样 print sparkdf.select('*').collect() #选择所有列 print sparkdf.select('a', 'b').collect() #选择某些列 print sparkdf.selectExpr("a * 2", "abs(b)").collect() #选择某些列,并进行运算 #print sparkdf.sort(sparkdf.a.desc(),sparkdf.b.desc()).collect() #按a列降序,b列降序排 print sparkdf.subtract(otherdf) #返回sparkdf中不在otherdf中的行 sparkdf.summary() #version 2.3 才有,返回比describe更多的信息 sparkdf.withColumn('a2', df.a + 2).collect() #用已有列经过运算生成新列