首页  >  问答  >  正文

用 python 给数据打标签,500 万条数据怎样提高效率?

ringa_leeringa_lee2712 天前508

全部回复(4)我来回复

  • 迷茫

    迷茫2017-04-17 16:54:14

    所以说你真的就把pandas 当读取数据的工具了吗..

    增加了一列is_tobacco 作为你说的标记

    filter_query 返回含有这些词的列表 效率有一定提升

    其次你可以分割后用 multiprocessing 执行 这个加速起来不止一点半点

    import pandas as pd
    word = pd.read_table('test.txt', encoding = 'utf-8', names = ['query'])
    
    def signquery(word):
        tobacco = [u'烟', u'白沙', u'黄金叶', u'利群', u'南京九五', u'黄鹤楼软',  u'黄鹤楼硬', u'娇子', u'钻石荷花', u'玉溪', u'七匹狼尚品',  u'七匹狼软灰']
        word['is_tobacco'] = word['query'].apply(lambda name:name in tobacco)
        return word
    
    def filter_query(word):
        tobacco = [u'烟', u'白沙', u'黄金叶', u'利群', u'南京九五', u'黄鹤楼软',  u'黄鹤楼硬', u'娇子', u'钻石荷花', u'玉溪', u'七匹狼尚品',  u'七匹狼软灰']
        return word[word['query'].apply(lambda name:name in tobacco)]['query'].to_dict().values()
    
    result = filter_query(word)
    
    print result

    回复
    0
  • 怪我咯

    怪我咯2017-04-17 16:54:14

    可以尝试用正则:

    import re
    pattern = re.compile(u'烟|白沙|黄金叶|利群|南京九五|黄鹤楼软|黄鹤楼硬|娇子|钻石荷花|玉溪|七匹狼尚品|七匹狼软灰')
    result = filter(pattern.search, word['query'])

    回复
    0
  • ringa_lee

    ringa_lee2017-04-17 16:54:14

    KMP 算法

    回复
    0
  • 天蓬老师

    天蓬老师2017-04-17 16:54:14

    KMP
    Manacher
    TireTree

    回复
    0
  • 取消回复