python del vs pandas drop

时间:2017-11-22 02:57:04

标签: python python-3.x pandas

我知道这可能是陈旧的辩论,但是pandas.droppython del功能在大型数据集的性能方面更好?

我正在使用python 3学习机器学习,并且不确定使用哪一个。我的数据采用pandas数据框格式。但是python del函数在built-in function中用于python。

4 个答案:

答案 0 :(得分:6)

总结有关功能的几点:

  • drop在列和行上都起作用; del仅在列上运行。
  • drop一次可以处理多个项目; del一次只能操作一个。
  • drop可以就地操作或返回副本; del仅是就地操作。

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop.html上的文档详细介绍了drop的功能。

答案 1 :(得分:3)

使用大约1.6 GB的随机生成的数据,看来df.dropdel更快,尤其是在多列上:

df = pd.DataFrame(np.random.rand(20000,10000))
t_1 = time.time()
df.drop(labels=[2,4,1000], inplace=True)
t_2 = time.time()
print(t_2 - t_1)

0.9118959903717041

相比:

df = pd.DataFrame(np.random.rand(20000,10000))
t_3 = time.time()
del df[2]
del df[4]
del df[1000]
t_4 = time.time()
print(t_4 - t_3)

4.052732944488525

@Inder的比较并不完全相同,因为它不使用inplace=True

答案 2 :(得分:1)

在10Mb的库存数据上进行了测试,得出以下结果:

使用以下代码进行删除

t=time.time()
d.drop(labels="2")
print(time.time()-t)

0.003617525100708008

对于del在同一列上具有以下代码:

t=time.time()
del d[2]
print(time.time()-t)

我得到的时间是:

0.0045168399810791016

在不同的数据集和列上重新运行没有显着差异

答案 3 :(得分:0)

在使用“ inplace = False”的放置方法中,您可以选择创建子集DF并保持与原始DF的接触,但是在del中,我相信此选项不可用。