sag*_*ain 6 python python-3.x pandas
我知道这可能是古老的话题,而是出于pandas.drop和python del功能,在大数据集是在性能方面更好?
我正在学习使用机器学习python 3,但不确定要使用哪个。我的数据是pandas数据帧格式。但是python del功能在built-in functionpython中。
总结一下关于功能的几点:
drop对列和行进行操作;del仅对列进行操作。 drop可以同时操作多个项目;del一次只操作一个。 drop可以就地操作或返回副本;del只是一个就地操作。https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop.html上的文档提供了有关drop功能的更多详细信息。
在 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
在不同的数据集和列上重新运行没有任何显着差异
使用大约 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.