python - 如何使用 Python 计算 csv 文件中某个值出现的次数?

标签 python python-3.x csv

我有一个 csv 文件,其中包含酒店列表及其星级(1 星到 5 星)。
B 列包含每家酒店的星级评级,从第 2 行开始(第 1 行是标题“点评星级”),每个单元格有一个星级值 (1 - 5)。
我需要为Python(v.3.6.4)编写一个脚本来计算“评论星星”列中出现“5”的次数。因此,获得 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”的列表,但不是总数。我尝试过其他几次 Pandas 叫声。大家有什么新的见解吗?

最佳答案

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

关于python - 如何使用 Python 计算 csv 文件中某个值出现的次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50859316/

相关文章:

在 Pandas 数据帧上使用 'slicer' 和 'where' 等效项的 Pythonic 方式

python - Yoda 条件为 "not x is None"

python - 在 Python 中部署 Tensorflow 模型

Python 模块导入 3.7

python - 如何在 python 中使用变量作为文件名的一部分打开文件?

ORACLE APEX - 下载到 .CSV(空值显示为 - 丢失)问题

csv - 如何从所有 csv 文件添加第 n 列并存储在另一个 csv 文件中(标题是该列来自的文件名)?

python - 用数组索引 torch 张量

python - 如何在 pygame 中禁用按键按住?

c# - 将大型 CSV 文件并行导出到 SQL Server