df = pd.DataFrame({'col': range(100)},index=range(100)) %timeit df.loc[random.randint(0,99),'col']#100000 loops,best of 3: 19.3 µs per loop
什么似乎更快(约10倍)是将数据框转换为字典,然后查询:
d = df.to_dict() %timeit d['col'][random.randint(0,99)]#100000 loops,best of 3: 2.5 µs per loop
有没有办法在没有明确创建字典的情况下使用普通数据框方法获得类似的性能?我应该使用.loc以外的东西吗?
或者这只是我最好使用这种解决方法的情况?
解决方法 如果要考虑有效性,那么Numpy数组可能是比熊猫数据帧更好的选择.我尝试重现您的示例以衡量效率比较:import numpy as npimport pandas as pdimport timeit,randomdf = pd.DataFrame({'col': range(100)},index=range(100)) print(timeit.timeit('df.loc[random.randint(0,"col"]',number=10000,globals=globals()))ds_numpy = np.array(df)print(timeit.timeit('ds_numpy[ds_numpy[random.randint(0,99)]]',globals=globals()))
结果:
$python test_pandas_vs_numpy.py 0.15838929702294990.05918855100753717
在这种情况下,看起来比使用Numpy数组而不是pandas数据帧在性能方面是优势.
参考:1
总结以上是内存溢出为你收集整理的python – pandas的速度df.loc [x,’column’]全部内容,希望文章能够帮你解决python – pandas的速度df.loc [x,’column’]所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)