从DataFrame列创建词元集合与词频字典:现有方法效率评估及计数字典实现问询
关于DataFrame列词元集合与词频字典的高效实现问题
嘿,我来帮你捋捋这两个问题~
一、词元集合的最优高效方案
你当前用set(list(itertools.chain.from_iterable(df.b.str.split())))的方法确实能得到列'b'的词元集合,但其实pandas内置的向量化操作会更高效,尤其是当你的DataFrame数据量较大的时候。
推荐的更优写法是利用str.split(expand=True)把拆分后的词展开成多列,再用stack()把所有词堆叠成一个Series,最后转成集合:
word_set = set(df.b.str.split(expand=True).stack())
这个方法依赖pandas的底层优化,避免了手动迭代的开销,运行速度会比你原来的方法更快,代码也更简洁直观。
二、生成词元词频计数字典
要生成包含词元和对应出现次数的字典,直接用pandas的value_counts()方法就可以轻松实现,这也是最高效的方式:
word_freq_dict = df.b.str.split(expand=True).stack().value_counts().to_dict()
用你的示例DataFrame测试的话,得到的字典会是:
{'more': 2, 'The': 1, 'Effect': 1, 'effective': 1, 'than': 1, 'bark': 1, 'oola': 1, 'a': 1}
如果需要忽略大小写(比如把"The"和"the"算作同一个词),可以在拆分前先把文本转成小写:
word_freq_dict = df.b.str.lower().str.split(expand=True).stack().value_counts().to_dict()
内容的提问来源于stack exchange,提问作者Shew
相关产品推荐
相关产品推荐

