python del vs pandas drop

sag*_*ain 6 python python-3.x pandas

我知道这可能是古老的话题,而是出于pandas.droppython del功能,在大数据集是在性能方面更好?

我正在学习使用机器学习python 3,但不确定要使用哪个。我的数据是pandas数据帧格式。但是python del功能在built-in functionpython中。

flo*_*w2k 9

总结一下关于功能的几点:

  • drop对列和行进行操作;del仅对列进行操作。
  • drop可以同时操作多个项目;del一次只操作一个。
  • drop可以就地操作或返回副本;del只是一个就地操作。

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop.html上的文档提供了有关drop功能的更多详细信息。


Ind*_*der 6

在 10Mb 的股票数据上进行测试,得到以下结果:

使用以下代码删除

t=time.time()
d.drop(labels="2")
print(time.time()-t)
Run Code Online (Sandbox Code Playgroud)

0.003617525100708008

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

t=time.time()
del d[2]
print(time.time()-t)
Run Code Online (Sandbox Code Playgroud)

我得到的时间是:

0.0045168399810791016

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


KT1*_*T12 6

使用大约 1.6 GB 的随机生成的数据,似乎df.drop比 快del,尤其是在多列上:

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)
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

4.052732944488525

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