DataFrame的统计函数的功能。
8.1 corr(col1, col2, method=None)
以双精度值计算DataFrame的两列的相关性。目前只支持personal相关系数. DataFrame.corr() and DataFrameStatFunctions.corr() 互为别名。
参数:● col1 – 第一列的名称
●col2 – 第二列的名称
●method – 相关方法,目前只支持 personal相关系数
8.2 cov(col1, col2)
计算给定列的样本协方差(由它们的名称指定)作为双精度值。DataFrame.cov() and DataFrameStatFunctions.cov() 互为别名。
参数:● col1 – 第一列的名称
● col2 – 第二列的名称
8.3 crosstab(col1, col2)
计算给定列的成对频率表. 每列的去重后不同值的数量应小于1e4. 最多1e6非零对频率将被返回. 每行的第一列将是col1的不同值,列名将是col2的不同值.第一列的名称应该为$col1_$col2. 没有出现的对数将为零. DataFrame.crosstab() and DataFrameStatFunctions.crosstab() 互为别名
参数:● col1 – 第一列的名称. 去重项将成为每一行的第一项。
● col2 – 第二列的名称. 去重项将成为DataFrame的列名称。
In [411]: df.crosstab('name','age').show()
+--------+---+---+
|name_age| 2| 5|
+--------+---+---+
| Bob| 0| 1|
| Alice| 1| 0|
+--------+---+---+
8.4 freqItems(cols, support=None)
找到列的频繁项,可能有误差。 DataFrame.freqItems() and DataFrameStatFunctions.freqItems()等价.
此功能用于探索性数据分析,不保证所生成的DataFrame的模式的向后兼容性。
参数:● cols – 用于计算频繁项的列的名称,为字符串的列表或元组。
● support –“频繁”项目的频率。 默认值是1%,必须大于1e-4。
In [413]: df.freqItems(['name','age']).show()
+--------------+-------------+
|name_freqItems|age_freqItems|
+--------------+-------------+
| [Bob, Alice]| [2, 5]|
+--------------+-------------+
In [414]: df.show()
+-----+---+------+
| name|age|height|
+-----+---+------+
|Alice| 2| 80|
| Bob| 5| null|
+-----+---+------+
8.5 sampleBy(col, fractions, seed=None)
根据每层上给出的分数返回一个没有更换的分层样本。
参数:● col – 定义分层的列
● fractions – 每层的抽样比例,如果没有指定层,我们将其分数视为零。
● seed – 随机值
返回: 一个代表分层样本的新DataFrame
In [416]: from pyspark.sql.functions import col
...: data = sqlContext.range(0, 100).select((col("id") % 4).alias("key"))
...: sampled = data.sampleBy("key", fractions={0: 0.1, 1: 0.2},seed=0)
...: sampled.groupBy("key").count().orderBy("key").show()
+---+-----+
|key|count|
+---+-----+
| 0| 2|
| 1| 7|
+---+-----+