Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中循环处理大型数据集的最佳方法是什么?_Python_Loops_Generator_Processing Efficiency - Fatal编程技术网

在python中循环处理大型数据集的最佳方法是什么?

在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

我目前正在使用下面的代码在大约20K条记录的数据集上循环。我创建了一个生成器并在for循环中使用它。完成这项工作大约需要10分钟。在python中有没有一种更有效的方法来循环大型数据集?我基本上试图实现的是识别数据帧(df_ir)的“number”列中的每个唯一值在某些列中是否存在重复值,如果存在,则将每个列的重复总数存储在dictionary d_cnt中

df_ir是一个具有120k记录的数据帧 df_ir['number'].unique()=20K条记录

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选项的一个稍加修改的版本(使用熊猫过滤器,然后将结果存储在新的数据帧中,而不是使用字典)来实现我的目标,代码现在似乎运行得更快。谢谢大家!!!