我写了一些python代码,大量使用pandas库.代码似乎有点慢,所以我通过cProfile运行它来查看瓶颈所在.
根据cProfile结果的一个瓶颈是对pandas.lib_scalar_compare的调用:
1604 262.301 0.164 262.301 0.164 {pandas.lib.scalar_compare}
我的问题是 – 在什么情况下这会被称为?当我选择部分DataFrame时,我会假设它.
这是我的代码的样子:
if (var=='9999'):
dataTable=resultTable.ix[(resultTable['col1'] == var1)
& (resultTable['col2']==var2)].copy()
else:
dataTable=resultTable.ix[(resultTable['col1'] == var1)
& (resultTable['col2']==var2)
& (resultTable['col3']==int(val3))].copy()
我有以下问题:
>这是最终调用导致瓶颈的代码的代码片段吗?
>如果是的话,还有优化吗?
我目前使用的熊猫版本是pandas-0.8.
任何有关这方面的帮助将不胜感激.
解决方法:
我的代码花了很多时间在pandas.lib.scalar_compare上,通过将基于字符串的列的数据类型转换为’category’,我能够将速度提高10倍.
例如:
$df['ResourceName'] = df['ResourceName'].astype('category')
有关更多信息,请参阅https://www.continuum.io/content/pandas-categoricals
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。