如何使用 Pandas 对某些行求和并将结果添加到默认字典(大型数据集)中



我有一个由 500 万个名称条目组成的数据帧。结构如下:

数据帧

从这个数据帧中可以读到的是,例如,玛丽这个名字是在 1910 年给阿拉斯加州 (AK( 的 14 个婴儿起的。但玛丽这个名字也给其他州和接下来几年的新生儿起了名字。

我想确定的是:该特定数据集中给定最多的名称是什么,该名称分配的频率如何?

我试过这个:

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])

最新更新