【问题标题】:How can I use value_counts() only for certain values?如何仅将 value_counts() 用于某些值?
【发布时间】:2022-01-01 07:15:21
【问题描述】:

我想在包含数千个产品评论的数据集中提取品牌的正面评论数量。我使用了这段代码,我得到了一张表格,其中包括正面和非正面评论的百分比。我怎样才能只获得品牌正面评价的百分比?我只想要positive_review中的“True”结果。谢谢!

df_reviews_ok.groupby("brand")["positive_review"].value_counts(normalize=True).mul(100).round(2)
brand                   positive_review
Belkin                  False               70.00
                        True                30.00
Bowers & Wilkins        False               67.65
                        True                32.35
Corsair                 False               75.22
                        True                24.78
Definitive Technology   False               68.29
                        True                31.71
Dell                    False               60.87
                        True                39.13
DreamWave               False              100.00
House of Marley         False              100.00
JBL                     False               58.43
                        True                41.57
Kicker                  True                66.67
                        False               33.33
Lenovo                  False               76.92
                        True                23.08
Logitech                False               75.75
                        True                24.25
MEE audio               False               53.80
                        True                46.20
Microsoft               False               67.86
                        True                32.14
Midland                 False               72.09
                        True                27.91
Motorola                False               72.92
                        True                27.08
Netgear                 False               72.30
                        True                27.70
Pny                     False               68.78
                        True                31.22
Power Acoustik          False              100.00
SVS                     False              100.00
Samsung                 False               61.94
                        True                38.06
Sanus                   False               75.93
                        True                24.07
Sdi Technologies, Inc.  False               55.63
                        True                44.37
Siriusxm                False               73.33
                        True                26.67
Sling Media             False               67.16
                        True                32.84
Sony                    False               55.40
                        True                44.60
Toshiba                 False               56.52
                        True                43.48
Ultimate Ears           False               70.21
                        True                29.79
Verizon Wireless        False               75.86
                        True                24.14
WD                      False               58.33
                        True                41.67
Yamaha                  False               61.15
                        True                38.85
Name: positive_review, dtype: float64

【问题讨论】:

  • 如果您共享一个示例数据帧,没有值计数计算,以及预期的输出,可能会更容易一些。可能有更好的解决方案可以避免使用 value_counts 路线

标签: python pandas data-manipulation


【解决方案1】:

以下面的玩具DataFrame为例:

df = pd.DataFrame({
    'brand': list('AAAABBBB'),
    'positive': [True, True, False, False, True, True, True, False]
})

如果您想获取每个品牌的正面评价相对于每个品牌的评价总数的百分比,请尝试:

df.groupby('brand')['positive'].mean()

结果如预期:

brand
A    0.50
B    0.75
Name: positive, dtype: float64

【讨论】:

    【解决方案2】:

    你可以unstack输出并切片True

    (df.groupby('brand')
       ['positive_review'].value_counts(normalize=True)
       .mul(100).round(2)
       .unstack(fill_value=0)
       [True]
     )
    

    【讨论】:

    • 问的问题好像挺麻烦的
    【解决方案3】:

    在语句之后使用.reset_index(),然后使用条件。

    【讨论】:

    • 这可能有用。您能否提供更详细的解释,并可能提供更多上下文代码,以便未来的读者可以遵循您的指导?
    猜你喜欢
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多