如何计算pyspark数据帧中值的条件概率?

雅西

我想在不收集的情况下通过pyspark中的列类型值来计算评级列中的评级('A','B','C')的条件概率。

输入:

    company     model    rating   type
0   ford       mustang     A      coupe
1   chevy      camaro      B      coupe
2   ford       fiesta      C      sedan
3   ford       focus       A      sedan
4   ford       taurus      B      sedan
5   toyota     camry       B      sedan

输出:

    rating   type    conditional_probability
0     A      coupe   0.50   
1     B      coupe   0.33
2     C      sedan   1.00
3     A      sedan   0.50
4     B      sedan   0.66
萨夫万

您可以groupby用来获取单独的ratings以及ratings和types的单独组合中项目计数,并使用这些值来计算条件概率。

from pyspark.sql import functions as F

ratings_cols = ["company", "model", "rating", "type"]
ratings_values = [
    ("ford", "mustang", "A", "coupe"),
    ("chevy", "camaro", "B", "coupe"),
    ("ford", "fiesta", "C", "sedan"),
    ("ford", "focus", "A", "sedan"),
    ("ford", "taurus", "B", "sedan"),
    ("toyota", "camry", "B", "sedan"),
]
ratings_df = spark.createDataFrame(data=ratings_values, schema=ratings_cols)
ratings_df.show()
# +-------+-------+------+-----+                                                  
# |company|  model|rating| type|
# +-------+-------+------+-----+
# |   ford|mustang|     A|coupe|
# |  chevy| camaro|     B|coupe|
# |   ford| fiesta|     C|sedan|
# |   ford|  focus|     A|sedan|
# |   ford| taurus|     B|sedan|
# | toyota|  camry|     B|sedan|
# +-------+-------+------+-----+

probability_df = (ratings_df.groupby(["rating", "type"])
                            .agg(F.count(F.lit(1)).alias("rating_type_count"))
                            .join(ratings_df.groupby("rating").agg(F.count(F.lit(1)).alias("rating_count")), on="rating")
                            .withColumn("conditional_probability", F.round(F.col("rating_type_count")/F.col("rating_count"), 2))
                            .select(["rating", "type", "conditional_probability"])
                            .sort(["type", "rating"]))

probability_df.show()
# +------+-----+-----------------------+                                          
# |rating| type|conditional_probability|
# +------+-----+-----------------------+
# |     A|coupe|                    0.5|
# |     B|coupe|                   0.33|
# |     A|sedan|                    0.5|
# |     B|sedan|                   0.67|
# |     C|sedan|                    1.0|
# +------+-----+-----------------------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从数据计算条件概率

来自分类Dev

如何根据R中的因子水平计算数据帧中值的频率?

来自分类Dev

R:如何计算另一数据帧的行中值的数量(长度变化)

来自分类Dev

如何根据pyspark数据帧中的条件转换日期格式?

来自分类Dev

计算每行超过数据帧中值的列数

来自分类Dev

如何在使用pyspark从其自己的数据帧中选择的火花数据帧中执行计算

来自分类Dev

计算pyspark数据帧中的速率

来自分类Dev

如何过滤pyspark数据帧

来自分类Dev

条件概率计算

来自分类Dev

计算条件概率Python

来自分类Dev

计算条件概率

来自分类Dev

条件概率计算

来自分类Dev

从数据帧计算列条件分布

来自分类Dev

如何在PySpark数据帧中计算每日基准(时间序列)

来自分类Dev

如何计算 pyspark 数据帧中多列的列中每个分类变量的频率?

来自分类Dev

Pyspark:如何编码复杂数据帧算法问题(根据条件求和)

来自分类Dev

从列表中计算条件概率

来自分类Dev

使用SQL计算条件概率

来自分类Dev

如何在pandas数据帧中的列之间进行条件计算?

来自分类Dev

如何在pyspark中转置数据帧?

来自分类Dev

如何从 PySpark 中的 RDD 创建数据帧?

来自分类Dev

在Julia数据帧中计算经验马尔可夫转移概率

来自分类Dev

R-如何使用不同的子集条件来计算每个均值,从而为数据帧列表计算组均值?

来自分类Dev

如何计算数据帧的增量?

来自分类Dev

使用列条件随机采样Pyspark数据帧

来自分类Dev

在pySpark中按条件拆分数据帧

来自分类Dev

pyspark sql:如何计算多个条件的行

来自分类Dev

在R中数据帧中值的返回位置

来自分类Dev

根据行中值的频率过滤数据帧

Related 相关文章

热门标签

归档