как найти значения, повторенные более n раз, используя только numpy? - PullRequest
2 голосов
/ 23 апреля 2020

Я новичок в numpy и python, поэтому, пожалуйста, будьте осторожны. Итак, я работаю с CSV-файлом PopularNames.csv, и он имеет разные столбцы, я хочу загрузить только столбец № 3, который называется «Популярные имена в Индии» и найти имена в этом столбце, которые были повторены более 10 раз. Я также только хочу использовать numpy для этой цели и пока не могу найти какое-либо решение. Мой код:

Baby_names=np.genfromtxt('popularnames.csv', delimiter=',', usecols=(3), skip_header=1, dtype=str)
for Baby_names:
    if np.unique(Baby_names)>10:
        print(Baby_names)

Я понимаю, что этот код неправильный, но это все, что я мог придумать, имея ограниченные знания, которыми владею. Любая помощь будет оценена. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Я создал для вас фиктивный пример:

from io import StringIO
test = "Baby_names,age,country\nsarah,4,USA\njames,1,UK\nsarah,2,'UK'\n'sarah,3,France\n'john,2,UK\njames,6,Australia"
a = np.genfromtxt(StringIO(test), delimiter=',',usecols=(0), skip_header=1, dtype=str)
print(a)

['sarah' 'james' 'sarah' "'sarah" "'john" 'james']

unique, counts = np.unique(a, return_counts=True)
x = dict(zip(unique, counts))

x:

{"'john": 1, "'sarah": 1, 'james': 2, 'sarah': 2}

print([key for key, value in x.items() if value >= 2])

['james', 'sarah']

Сокращенный код:

for (name, count) in zip(*np.unique(a, return_counts=True)):
    if count >1:
        print(name)
0 голосов
/ 23 апреля 2020

Синтаксис для for l oop неправильный.

Попробуйте следующий код:

baby_names = np.genfromtxt('popularnames.csv', delimiter=',', usecols=(3), skip_header=1, dtype=str)

for name, count in zip(*np.unique(baby_names, return_count=True)):
    if count > 10:
        print(name)

return_count=True говорит numpy возвращать счетчик для каждого уникальное имя. zip привязывает имена к счетам, что позволяет нам затем выполнять итерации по двум.

Если вы новичок в Python, я предлагаю вам продолжить его изучение, прежде чем использовать numpy.

...