如何计算使用Python在csv文件中出现值的次数?

时间:2018-06-14 13:59:50

标签: python python-3.x csv

我有一个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"的列表,但不是总数。我已经尝试过其他几个熊猫电话。有人有任何新的见解吗?

2 个答案:

答案 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)