Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取dataframe中大型语料库中选定单词的百分比_Python_Python 3.x_Pandas_Nlp - Fatal编程技术网

Python 获取dataframe中大型语料库中选定单词的百分比

Python 获取dataframe中大型语料库中选定单词的百分比,python,python-3.x,pandas,nlp,Python,Python 3.x,Pandas,Nlp,我有一个关键字列表,如下所示: keywords = {'dog', 'people', 'bird', 'snake', 'rabbit', 'forest'} 我想得到所有这些单词出现在数据框中每一列的每一行中的百分比。列中的每一行都包含大量文本。使用下面的代码,我在名为perc\u words的列中获得所选关键字的计数。有没有办法把它转换成一个百分比?多谢 import pandas as pd df['perc_words'] = df['text'].apply(lambda x:

我有一个关键字列表,如下所示:

keywords = {'dog', 'people', 'bird', 'snake', 'rabbit', 'forest'}
我想得到所有这些单词出现在数据框中每一列的每一行中的百分比。列中的每一行都包含大量文本。使用下面的代码,我在名为
perc\u words
的列中获得所选关键字的计数。有没有办法把它转换成一个百分比?多谢

import pandas as pd
df['perc_words'] = df['text'].apply(lambda x: sum(i in keywords for i in str(x).split()))
您可以使用来计算出现的
关键字
,然后除以:

df['perc_words']=df.text.str.count('|'.join(关键字))/df.text.str.split().str.len()
要获得每1000次出现次数,您可以将
perc_words
乘以1000:

df['per_1000']=df.perc_words*1000

玩具示例:

df=pd.DataFrame({'text':['dog apple','foo','people is people']})
#正文
#0狗苹果
#一福
#2人就是人
关键字的计数

df.text.str.count('|'.join(关键字))
# 0    1
# 1    0
# 2    2
#名称:text,数据类型:int64
总字数:

df.text.str.split().str.len()
# 0    2
# 1    1
# 2    3
#名称:text,数据类型:int64
关键字的百分比

df['perc_words']=df.text.str.count(r'|'.join(关键字))/df.text.str.split().str.len()
df['per_1000']=df.perc_单词*1000
#每1000个字的文本百分比
#0狗苹果0.500000 500.000000
#1 foo 0.000000 0.000000
#2个人是0.666667 666.666667

你能上传一个什么是
df
的例子吗?这是一本简单的字典吗?此外,简单地将单词数除以单词总数是否不够?Hi@Seankala,
df['text']
列表示每行中的许多已处理文本。换句话说,每行包含一个文本文件,该文件大小写较低,并且删除了stopwords。你说得对,用词数除以总字数也行。谢谢你的回答。有没有办法,比如说,每10000个单词中出现一个单词?crackers,你能更详细地解释一下吗?假设一行共有18000个单词,其中包含500个
关键字
,您希望的输出是什么?你想检查前10000个单词,然后检查下8000个单词吗?谢谢你的玩具示例。如果一行有18000个单词,其中包含500个
关键字,这意味着每18000个单词中,关键字出现500次。但是每1000个单词中出现多少次关键字?我想应该是用百分比乘以所需的单词数,即1000?哦,好吧,如果这就是你的意思,是的,你可以说在第一行,“dog”的出现率是50%,即每1000个单词出现500次。