Подсчитайте, сколько раз за кандидата проголосовали - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь просмотреть список, который был импортирован из CSV-файла, и определить количество голосов, за которые проголосовал кандидат. Я пишу это на Python, и я не уверен, должен ли я создать словарь и выполнить поиск по индексу или создать цикл, который даст мне счетчик имени?

Sample Data: 
Voter ID,County,Candidate
12864552,Marsh,Khan
17444633,Marsh,Correy
19330107,Marsh,Khan
19865775,Queen,Khan
11927875,Marsh,Khan
19014606,Marsh,Li
17775191,Queen,Correy
14003692,Marsh,Khan

Ответы [ 4 ]

0 голосов
/ 12 сентября 2018

Из стандартной библиотеки:

С учетом

Пример файла test.txt:

Voter ID,County,Candidate
12864552,Marsh,Khan
17444633,Marsh,Correy
19330107,Marsh,Khan
19865775,Queen,Khan
11927875,Marsh,Khan
19014606,Marsh,Li
17775191,Queen,Correy
14003692,Marsh,Khan
12864552,Marsh,Khan
17444633,Marsh,Correy
19330107,Marsh,Khan
19865775,Queen,Khan
11927875,Marsh,Khan
19014606,Marsh,Li
17775191,Queen,Correy
14003692,Marsh,Khan

код

import collections as ct


filepath = "test.txt"
with open(filepath) as f:
    votes = ct.Counter()
    header = next(f)
    for line in f:
        candidate = line.split(",")[-1].strip()
        votes[candidate] += 1

С другой стороны

import csv
import collections as ct


filepath = "test.txt"
with open(filepath) as f:
    votes = ct.Counter()
    reader = csv.reader(f)
    next(reader)
    for line in reader:
        candidate = line[-1]
        votes[candidate] += 1

Демо

votes
# Counter({'Khan': 10, 'Correy': 4, 'Li': 2})

votes.most_common(1)
# [('Khan', 10)]

См. Также документы для collections.Counter и csv модулей.

0 голосов
/ 12 сентября 2018

Если вы не хотите использовать панд, вы также можете использовать счетчик из дерева коллекций . Пример использования этого класса приведен ниже. Если вы хотите что-то конкретное для вашей проблемы, отредактируйте свой вопрос, чтобы опубликовать то, что вы пробовали, и я отредактирую этот ответ, чтобы помочь вам.

    c = Counter('abcaba')
    c['a'] += 1         # increment an existing value
    c.clear()           # clear the counter -- all values are 0 and you can start again
    c['hd1']            # should be 1
    c['hd1'] = c['hd1']+1 
    c['hd1']            # should be 2
0 голосов
/ 12 сентября 2018

Или можете сделать pandas, pandas.DataFrame.groupby, затем сделать as_index=False внутри, затем сделать count для подсчета:

import pandas as pd
df=pd.read_csv(filename)
print(df.groupby(['Candidate','County'],as_index=False).count())
0 голосов
/ 12 сентября 2018

Сначала установите python-pandas с

pip install pandas

Затем вы можете использовать следующий код для подсчета кандидатов в округе.

import pandas as pd
df = pd.read_csv('<path_to_csv.file>')
df.groupby(['Candidate', 'County']).count()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...