pandas 查找数据

优化Pandas数据筛选效率
本文探讨了在处理ConceptNet5中文数据集时,如何利用Pandas库进行高效的数据筛选。通过对比不同方法的执行时间,发现直接使用布尔运算比apply方法更高效,并进一步优化了代码,将速度提升了数倍。

这里选取的数据集为 conceptNet5 的中文数据集

data = pd.read_csv(FILE, delimiter='\t')
data.columns = ['uri', 'relation', 'start', 'end', 'json']

在这里插入图片描述

使用布尔运算

使用计时器参见:【python 代码计时】

with Timer() as t:
    data[data['start'].str.contains('zh') & data['end'].str.contains('zh')]
'''
[time spent: 0.57s]
'''

这个速度还比较快了
在这里插入图片描述

使用 apply 方法

with Timer() as t:
    data[data.apply(lambda row: 'zh' in row['start'] and 'zh' in row['end'],axis=1)]
'''
[time spent: 9.03s]
'''

apply 是逐行遍历,看来没有做并行优化,

然鹅!上面的代码是有问题的!是可以优化的!

最大的问题就是上面的代码把不相关的列也牵扯了进来,正确的写法应该是:

with Timer() as t:
	data[data['start'].apply(lambda row: row.find('zh')>0) & data['end'].apply(lambda row: row.find('zh')>0)]
'''
[time spent: 0.33s]
'''

速度提升令人震惊!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颹蕭蕭

白嫖?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值