У меня есть датафрейм, который состоит из 5 миллионов записей имен. Структура выглядит следующим образом:
фрейм данных
Из этого фрейма данных можно прочитать, что, например, имя Мэри было присвоено 14 малышам. в штате Аляска (АК) в 1910 году. Но имя Мэри было также дано новорожденным в других штатах и в последующие годы.
Что я хотел бы назвать является: Какое имя наиболее часто встречается в этом конкретном наборе данных в целом и как часто это имя назначается?
Я пробовал это:
import pandas as pd
from collections import defaultdict
df = pd.read_csv("names.csv")
mask = df[["Name", "Count"]]
counter = 0
dd = defaultdict(int)
for pos, data in mask.iterrows():
name = data["Name"]
dd[name] = dd[name] + data["Count"]
counter += 1
if counter == 100000:
break
print ("Done!")
freq_name = 0
name = ""
for key, value in dd.items():
if freq_name < value:
freq_name = value
name = key
print(name)
Этот код работает довольно хорошо, но только для до 100.000 строк. Однако, когда я использую представленный код с полным набором данных, это занимает много времени.
Любая идея или намек на то, что я могу улучшить, будет принята с благодарностью.