Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.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中忽略单词云中的一些单词?_Python_Pandas_Word Cloud - Fatal编程技术网

如何在Python中忽略单词云中的一些单词?

如何在Python中忽略单词云中的一些单词?,python,pandas,word-cloud,Python,Pandas,Word Cloud,在Python3和Pandas中,我有一个程序可以从一个列生成单词cloud: import pandas as pd import numpy as np from wordcloud import WordCloud import matplotlib.pyplot as plt autores_atuais = pd.read_csv("deputados_autores_projetos.csv", sep=',',encoding = 'utf-8', converters={'Id

在Python3和Pandas中,我有一个程序可以从一个列生成单词cloud:

import pandas as pd
import numpy as np
from wordcloud import WordCloud
import matplotlib.pyplot as plt

autores_atuais = pd.read_csv("deputados_autores_projetos.csv", sep=',',encoding = 'utf-8', converters={'IdAutor': lambda x: str(x), 'IdDocumento': lambda x: str(x), 'CodOriginalidade': lambda x: str(x), 'IdNatureza': lambda x: str(x), 'NroLegislativo': lambda x: str(x)})

autores_atuais.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 6632 entries, 74057 to 84859
Data columns (total 10 columns):
IdAutor             6632 non-null object
IdDocumento         6632 non-null object
NomeAutor           6632 non-null object
AnoLegislativo      6632 non-null object
CodOriginalidade    5295 non-null object
DtEntradaSistema    6632 non-null object
DtPublicacao        6632 non-null object
Ementa              6632 non-null object
IdNatureza          6632 non-null object
NroLegislativo      6632 non-null object
dtypes: object(10)
memory usage: 569.9+ KB


wordcloud = WordCloud().generate(' '.join(autores_atuais['Ementa']))
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
将熊猫作为pd导入
将numpy作为np导入
从wordcloud导入wordcloud
将matplotlib.pyplot作为plt导入
autores_atuais=pd.read_csv(“deputados_autores_projetos.csv”,sep=',encoding='utf-8',converters={'IdAutor':lambda x:str(x),'IdDocumento':lambda x:str(x),'CodOriginalidade':lambda x:str(x),'IdNatureza':lambda x:str(x),'nrolegistivo':lambda x:str(x)})
autores_atuais.info()
INT64索引:6632条,74057至84859
数据列(共10列):
IdAutor 6632非空对象
IdDocumento 6632非空对象
NomeAutor 6632非空对象
AnoLegivivo 6632非空对象
CodOriginalidade 5295非空对象
DtEntradaSistema 6632非空对象
DtPublicacao 6632非空对象
Elementa 6632非空对象
IdNatureza 6632非空对象
NroLegislativo 6632非空对象
数据类型:对象(10)
内存使用率:569.9+KB
wordcloud=wordcloud().generate(“”.join(autores_atuais['Ementa']))
plt.imshow(wordcloud)
plt.轴(“关闭”)
plt.show()

拜托,我怎么能忽略云端的一些话呢?例如,小词(“de”、“ao”)和某些词(“Estado”)

我认为需要使用
~
作为反向条件,使用按单词长度过滤的单词列表,必要时使用
作为链条件:

autores_atuais = pd.DataFrame({'Ementa':['Estado','another','be','de','def','bax']})

print (autores_atuais)
    Ementa
0   Estado
1  another
2       be
3       de
4      def
5      bax

m1 = autores_atuais['Ementa'].isin(['Estado','another','next'])
m2 = autores_atuais['Ementa'].str.len() < 3

s = autores_atuais.loc[~(m1 | m2), 'Ementa']
print (s)
4    def
5    bax
Name: Ementa, dtype: object
要删除短单词(例如,2个或更少),可以使用

autores_atuais = autores_atuais[autores_atuais.Ementa.str.len() <= 2]
autores_atuais = autores_atuais[~autores_atuais.Ementa.isin(restricted)]

我想你在用阿穆勒的模块?如果是,则有一个
stopwords
参数,允许您指定包含要排除的单词的文件

例如,如果您创建一个名为
stopwords.txt的文本文件,并将其保存在与csv文件相同的文件夹中,其中包含:

de
ao
Estado
然后更改为:

wordcloud = WordCloud(stopwords='stopwords.txt').generate(' '.join(autores_atuais['Ementa']))
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

应该正确地排除这些词。要排除的默认单词集包含在模块文件夹中,应称为
stopwords
。如果您经常遇到相同的问题,在此处修改此默认文件可能会有所帮助。

谢谢。但是,通过这种方式,生成的单词cloud是使用列的名称创建的,而不是使用列“Ementa”的单词。看起来m1和m2将所有包含这些单词的行从dataframe@ReinaldoChaves-你说得对,只需修改答案。再次感谢。我这样做了:m1=~autoresèu atuais['Ementa'].isin(['Constituièo','Dispèe','Constituièo','artigo'])m2=autoresèu atuais['Ementa'].str len()>=2sobra=autoresèu atuais.loc[m1&m2,'Ementa']您还可以从
nltk
包导入一个停止字列表。他们有许多可用语言的停止词列表。如果您只想使用stopwords,那么nltk包可能会有些过分,但是如果您将它用于其他目的,那么它可能会很有用。谢谢@asongtoruin。但一些词语继续出现。司令部似乎明白,当某些单词与其他单词组合在一起时,它们必须被计算,或者它们的组合使它们不同(如“da consticião”、“do Estado”、“consticião do”)。这些是巴西葡萄牙语的单词。可能是这样吗?对不起,我现在已经看到你的评论了
wordcloud = WordCloud(stopwords='stopwords.txt').generate(' '.join(autores_atuais['Ementa']))
plt.imshow(wordcloud)
plt.axis("off")
plt.show()