如何用 Pandas 总结某些行并将结果添加到 defaultdict(大型数据集)

How to sum up certain rows with Pandas and add the result to a defaultdict (large dataset)

我有一个包含 500 万个名称条目的数据框。结构如下:

dataframe

从这个数据框中可以看出,例如,1910 年阿拉斯加 (AK) 的 14 个婴儿被取名为 Mary。但是名字 玛丽在其他州和随后的几年中也被送给新生儿。

我想确定的是:整个特定数据集中最常使用的名称是什么,该名称分配的频率是多少?

我试过这个:

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 行。但是,当我将提供的代码与完整数据集一起使用时,它需要很长时间。

任何想法或提示我可以改进的地方都将不胜感激。

根据评论中的建议,您可以使用如下内容:

df = pd.read_csv("names.csv")
name, total_count = max(df.groupby('Name').Count.sum().items(), key=lambda x: x[1])