在Python中如何实现长尾词的提取?

2026-04-30 18:301阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计881个文字,预计阅读时间需要4分钟。

在Python中如何实现长尾词的提取?

目录:Python list筛选包含字符的字段内容:Python 列表筛选包含特定字符的字段例如以下两个列表:- 测试列表1:[1, 'apple', 3.14, 'banana', True]- 测试列表2:['cat', 'dog', 'apple', 'elephant']

1. 构造测试列表

2.比较遍历、列表生成式

3.使用filter函数

4.使用pandas的merge方法三种方法效率比较

Python 列表筛选包含字符的字段

目录
  • python list筛选包含字符的字段
  • Python 列表筛选数据
    • 比如有以下两个列表
    • 先构造测试的列表
    • 比较遍历、列表生成式+filter 、pandas 的 merge 三种方法效率

python list筛选包含字符的字段

l = [‘123a',‘456b',‘789c'] ll = [s for s in l if ‘a' in s]

这是通过判断语句

在Python中如何实现长尾词的提取?

lst = [“123a”, “456b”, “789c”] lst = list(filter(lambda x: x.find(“a”) >= 0, lst)) print(lst)

这是通过函数

Python 列表筛选数据

在做数据处理中,常会遇到列表筛选

比如有以下两个列表

根据上列表中的KEY1 , 筛选下列表的数据,也就是标黄的数据。数量不大的情况,一般就是遍历比较,逻辑简单,几行代码搞掂。

但如果列表达到万,或者百万、千万,那遍历效率就低了。

先构造测试的列表

# 构造筛选目标列表,确保KEY不重复 n1 = 30000 n1_set = set([random.randint(1,n1) for n in range(n1)]) n1 = len(n1_set) list1 = [['1108{:0>6d}27'.format(n), "".join(random.sample('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',10))] for n in n1_set] # 构造待筛选数据列表,确保KEY不重复 n2 = 100000 n2_set = set([random.randint(1,n2) for n in range(n2)]) n2= len(n2_set) list2 = [['1108{:0>6d}27'.format(n), "".join(random.sample('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',5)),n ] for n in n2_set]

比较遍历、列表生成式+filter 、pandas 的 merge 三种方法效率

筛选目标18971条, 待处理数据63275条 遍历生成数据 耗时11.591秒 获得数据量 12024 ['11080000427', 'eArVD', 4] filter 耗时11.5秒 获得数据量 12024 ['11080000427', 'eArVD', 4] merge 耗时0.058秒 获得数据量 12024 ['11080000427', 'eArVD', 4]

筛选目标189733条, 待处理数据632363条 遍历生成数据 耗时1597.4296秒 获得数据量 120180 ['1108000000227', 'NkoEQ', 2] filter 耗时1575.0432秒 获得数据量 120180 ['1108000000227', 'NkoEQ', 2] merge 耗时0.64秒 获得数据量 120180 ['1108000000227', 'NkoEQ', 2]

经过比较, 直接遍历生成和列表生成式+filter的效率基本一致,pandas 的merge 效率最高。适合大批量数据处理。

上代码

print("筛选目标{}条, 待处理数据{}条".format(n1,n2)) # 直接遍历生成数据,计时 t1 = time.time() list_temp = [n[0] for n in list1] list3 = [] for n in list2: if n[0] in list_temp: list3.append(n) t2 = time.time() print("遍历生成数据 耗时{}秒".format(round(t2 - t1, 4)), "获得数据量", len(list3)) print(list3[0]) # 用filter筛选数据,计时 t1 = time.time() list_temp = [n[0] for n in list1] list3 = [n for n in filter(lambda x: x[0] in list_temp, list2)] t2 = time.time() print("filter 耗时{}秒".format(round(t2 - t1,4)), "获得数据量", len(list3)) print(list3[0]) # 用pd.merge 筛选数据,计时 t1 = time.time() df1 = pd.DataFrame(list1, columns=['k1','m1']) df2 = pd.DataFrame(list2, columns=['k1','m2','n2']) df3 = pd.merge(df1[['k1']], df2, how='inner', on='k1') t2 = time.time() print("merge 耗时{}秒".format(round(t2 - t1,4)), "获得数据量", len(df3)) print(list(df3.iloc[0]))

以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。

本文共计881个文字,预计阅读时间需要4分钟。

在Python中如何实现长尾词的提取?

目录:Python list筛选包含字符的字段内容:Python 列表筛选包含特定字符的字段例如以下两个列表:- 测试列表1:[1, 'apple', 3.14, 'banana', True]- 测试列表2:['cat', 'dog', 'apple', 'elephant']

1. 构造测试列表

2.比较遍历、列表生成式

3.使用filter函数

4.使用pandas的merge方法三种方法效率比较

Python 列表筛选包含字符的字段

目录
  • python list筛选包含字符的字段
  • Python 列表筛选数据
    • 比如有以下两个列表
    • 先构造测试的列表
    • 比较遍历、列表生成式+filter 、pandas 的 merge 三种方法效率

python list筛选包含字符的字段

l = [‘123a',‘456b',‘789c'] ll = [s for s in l if ‘a' in s]

这是通过判断语句

在Python中如何实现长尾词的提取?

lst = [“123a”, “456b”, “789c”] lst = list(filter(lambda x: x.find(“a”) >= 0, lst)) print(lst)

这是通过函数

Python 列表筛选数据

在做数据处理中,常会遇到列表筛选

比如有以下两个列表

根据上列表中的KEY1 , 筛选下列表的数据,也就是标黄的数据。数量不大的情况,一般就是遍历比较,逻辑简单,几行代码搞掂。

但如果列表达到万,或者百万、千万,那遍历效率就低了。

先构造测试的列表

# 构造筛选目标列表,确保KEY不重复 n1 = 30000 n1_set = set([random.randint(1,n1) for n in range(n1)]) n1 = len(n1_set) list1 = [['1108{:0>6d}27'.format(n), "".join(random.sample('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',10))] for n in n1_set] # 构造待筛选数据列表,确保KEY不重复 n2 = 100000 n2_set = set([random.randint(1,n2) for n in range(n2)]) n2= len(n2_set) list2 = [['1108{:0>6d}27'.format(n), "".join(random.sample('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',5)),n ] for n in n2_set]

比较遍历、列表生成式+filter 、pandas 的 merge 三种方法效率

筛选目标18971条, 待处理数据63275条 遍历生成数据 耗时11.591秒 获得数据量 12024 ['11080000427', 'eArVD', 4] filter 耗时11.5秒 获得数据量 12024 ['11080000427', 'eArVD', 4] merge 耗时0.058秒 获得数据量 12024 ['11080000427', 'eArVD', 4]

筛选目标189733条, 待处理数据632363条 遍历生成数据 耗时1597.4296秒 获得数据量 120180 ['1108000000227', 'NkoEQ', 2] filter 耗时1575.0432秒 获得数据量 120180 ['1108000000227', 'NkoEQ', 2] merge 耗时0.64秒 获得数据量 120180 ['1108000000227', 'NkoEQ', 2]

经过比较, 直接遍历生成和列表生成式+filter的效率基本一致,pandas 的merge 效率最高。适合大批量数据处理。

上代码

print("筛选目标{}条, 待处理数据{}条".format(n1,n2)) # 直接遍历生成数据,计时 t1 = time.time() list_temp = [n[0] for n in list1] list3 = [] for n in list2: if n[0] in list_temp: list3.append(n) t2 = time.time() print("遍历生成数据 耗时{}秒".format(round(t2 - t1, 4)), "获得数据量", len(list3)) print(list3[0]) # 用filter筛选数据,计时 t1 = time.time() list_temp = [n[0] for n in list1] list3 = [n for n in filter(lambda x: x[0] in list_temp, list2)] t2 = time.time() print("filter 耗时{}秒".format(round(t2 - t1,4)), "获得数据量", len(list3)) print(list3[0]) # 用pd.merge 筛选数据,计时 t1 = time.time() df1 = pd.DataFrame(list1, columns=['k1','m1']) df2 = pd.DataFrame(list2, columns=['k1','m2','n2']) df3 = pd.merge(df1[['k1']], df2, how='inner', on='k1') t2 = time.time() print("merge 耗时{}秒".format(round(t2 - t1,4)), "获得数据量", len(df3)) print(list(df3.iloc[0]))

以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。