【问题标题】:How do I count the number of times a value occurs in a csv file with Python?如何使用 Python 计算一个值在 csv 文件中出现的次数?
【发布时间】:2018-06-14 13:59:50
【问题描述】:

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

【问题讨论】:

    标签: python python-3.x csv


    【解决方案1】:

    这里不需要熊猫。您可以使用标准库中的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*酒店的数量。

    【讨论】:

    • 所以他想用 c[5] 得到 5 颗星的总数对吧?
    • @lamorach,没错。
    【解决方案2】:
    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)
    

    【讨论】:

    • (df['ReviewStarts'] == 5).sum()
    猜你喜欢
    • 2019-09-01
    • 2020-05-15
    • 1970-01-01
    • 2018-11-30
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多