我知道这可能是陈旧的辩论,但是pandas.drop
和python del
功能在大型数据集的性能方面更好?
我正在使用python 3
学习机器学习,并且不确定使用哪一个。我的数据采用pandas
数据框格式。但是python del
函数在built-in function
中用于python。
答案 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.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)
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中,我相信此选项不可用。