首页 > 解决方案 > 尝试制作一个条形图,按星级 (1.0 , 2.0, 3.0, 4.0, 5.0) 显示总评分。如何提取和分组它们?

问题描述

在此处输入图像描述

我正在尝试制作一个条形图或直方图,将所有评级组合在一起(即,将所有 1 星评级、2 星评级等组合在一起)。我希望该图显示每个组的总收视率。

in: df['first'] = df['rating'].str.split('out').str[0]

    rating_df = df['first'].value_counts()

    rating_df

out: 5.0     246
     4.0     169
     4.5     123
     3.5     118
     4.1     113
     3.8     111
     4.2     109
     3.7     107
     3.9     106
     4.4     105
     4.6      96
     4.3      96
     3.6      90
     4.7      84
     3.0      83
     3.3      68
     3.4      65
     3.2      59
     3.1      57
     1.0      57
     4.8      38
     2.0      31
     2.9      26
     2.6      23
     2.8      21
     2.5      17
     2.7      15
     2.3       8
     4.9       8
     2.4       7
     1.9       7

     Name: first, dtype: int64

是否可以按第一个索引的编号将它们全部分组?

标签: pythonpandas

解决方案


我希望你的数据框如下,

     rating                counts
     5.0 Out of 5 stars    246
     4.0 Out of 5 stars    169
     4.5 Out of 5 stars    123
     ...

在这种情况下,我们可以从评级列创建一个新列,然后我们可以通过聚合对计数求和,如下所示。

df['first'] = df['rating'].str.split('.').str[0]

df.groupby("first").agg({"counts": "sum"})

推荐阅读