我有一个csv文件,其中包含一系列酒店及其星级评分(1星到5星)。
B栏列出了每个酒店的星级评分,从第2行开始(第1行是标题"评论星"),每个单元格一个星级值(1-5)。
我需要为Python编写一个脚本(v.3.6.4)来计算次数" 5"发生在" Review Stars"列中。因此拥有5星评级的公司数量。例如,如果我有2000家酒店,其中800家有5星评级,我需要python返回" 800"。
到目前为止,我写了:
import csv
from decimal import *
import math
import pandas as pd
with open('ServiceReviews.csv', 'r') as f:
data = csv.reader(f)
for row in f:
CustomerEmail = row[0]
ReviewStars = row[1]
ReferenceID = row[2]
BusinessUnitID = row[3]
Tags = row[4]
for value in ReviewStars:
df = pd.DataFrame({'5':list(ReviewStars)})
fives = df['5'].value_counts()
print (fives)
这将返回所有" 5"的列表,但不是总数。我已经尝试过其他几个熊猫电话。有人有任何新的见解吗?
答案 0 :(得分:2)
这里没有熊猫的需要。您可以使用标准库中的collections.Counter
:
import csv
from collections import Counter
with open('ServiceReviews.csv', 'r') as f:
c = Counter(row[1] for row in csv.reader(f))
Counter
对象c
将是一个计数字典,其中星号为键,各个计数为值。因此,您可以使用c[5]
来提取5 *酒店的数量。
答案 1 :(得分:0)
import pandas as pd
df = pd.read_csv('ServiceReviews.csv')
df_result = df[df['ReviewStars'] == 5]
print(len(df_result))
或
import pandas as pd
df = pd.read_csv('ServiceReviews.csv')
df_result = df[df['ReviewStars'] == 5].count()
print(df_result)