如何仅对某些值使用 value_counts()?
How can I use value_counts() only for certain values?
我想在包含数千种产品评论的数据集中提取品牌正面评论的数量。我使用了这段代码,得到了 table,包括正面和非正面评论的百分比。我怎样才能只获得品牌正面评价的百分比?我只想要 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
以下面的玩具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
在语句后使用 .reset_index()
然后使用条件如何。
您可以 unstack
输出并切片 True
(df.groupby('brand')
['positive_review'].value_counts(normalize=True)
.mul(100).round(2)
.unstack(fill_value=0)
[True]
)
我想在包含数千种产品评论的数据集中提取品牌正面评论的数量。我使用了这段代码,得到了 table,包括正面和非正面评论的百分比。我怎样才能只获得品牌正面评价的百分比?我只想要 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
以下面的玩具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
在语句后使用 .reset_index()
然后使用条件如何。
您可以 unstack
输出并切片 True
(df.groupby('brand')
['positive_review'].value_counts(normalize=True)
.mul(100).round(2)
.unstack(fill_value=0)
[True]
)