在python中循环处理大型数据集的最佳方法是什么?
我目前正在使用下面的代码在大约20K条记录的数据集上循环。我创建了一个生成器并在for循环中使用它。完成这项工作大约需要10分钟。在python中有没有一种更有效的方法来循环大型数据集?我基本上试图实现的是识别数据帧(df_ir)的“number”列中的每个唯一值在某些列中是否存在重复值,如果存在,则将每个列的重复总数存储在dictionary d_cnt中 df_ir是一个具有120k记录的数据帧 df_ir['number'].unique()=20K条记录在python中循环处理大型数据集的最佳方法是什么?,python,loops,generator,processing-efficiency,Python,Loops,Generator,Processing Efficiency,我目前正在使用下面的代码在大约20K条记录的数据集上循环。我创建了一个生成器并在for循环中使用它。完成这项工作大约需要10分钟。在python中有没有一种更有效的方法来循环大型数据集?我基本上试图实现的是识别数据帧(df_ir)的“number”列中的每个唯一值在某些列中是否存在重复值,如果存在,则将每个列的重复总数存储在dictionary d_cnt中 df_ir是一个具有120k记录的数据帧 df_ir['number'].unique()=20K条记录 lst_tk = ['calle
lst_tk = ['caller_id','opened_by','made_sla']
d_cnt = {}
for col in lst_tk:
d_cnt[col]=0
gen_inc = (i for i in df_ir['number'].unique())
for incnum in gen_inc:
for col in lst_tk:
if df_ir[df_ir['number']== incnum][col].value_counts().count()>1:
d_cnt[col]+=1
可以添加示例输入和预期输出吗?什么是“数据集”?您正在使用熊猫数据帧吗?那么最有效的方法就是使用itertuples,但首先你应该避免在数据帧上进行任何形式的显式循环,因为对我来说,你的生成器是无用的-你应该使用df_ir['number']中incnum的
获得相同的速度。unique()
你最好的办法是将你的逻辑放入一个单独的函数中,然后通过一个应用过程将其应用于整个数据帧。感谢大家提供的有用见解。目前,在我有限的知识范围内,我使用了Jared Wilber选项的一个稍加修改的版本(使用熊猫过滤器,然后将结果存储在新的数据帧中,而不是使用字典)来实现我的目标,代码现在似乎运行得更快。谢谢大家!!!可以添加示例输入和预期输出吗?什么是“数据集”?您正在使用熊猫数据帧吗?那么最有效的方法就是使用itertuples,但首先你应该避免在数据帧上进行任何形式的显式循环,因为对我来说,你的生成器是无用的-你应该使用df_ir['number']中incnum的获得相同的速度。unique()
你最好的办法是将你的逻辑放入一个单独的函数中,然后通过一个应用过程将其应用于整个数据帧。感谢大家提供的有用见解。目前,在我有限的知识范围内,我使用了Jared Wilber选项的一个稍加修改的版本(使用熊猫过滤器,然后将结果存储在新的数据帧中,而不是使用字典)来实现我的目标,代码现在似乎运行得更快。谢谢大家!!!