使用 Python 从数据框的列中删除停用词
Remove stop words from a dataframe's colum with Python
我设法从网站中提取了一个单词列表并将它们存储在 dataframe 中。现在我需要的是从 "Palabras" 列中删除其中一些单词,只保留前 500 条记录。
到目前为止,这是我的代码:
import requests
wiki_url = "https://es.wiktionary.org/wiki/Wikcionario:Frecuentes-(1-1000)-Subt%C3%ADtulos_de_pel%C3%ADculas"
wiki_texto = requests.get(wiki_url).text
from bs4 import BeautifulSoup
wiki_datos = BeautifulSoup(wiki_texto, "html")
wiki_filas = wiki_datos.findAll("tr")
print(wiki_filas[1])
print("...............................")
wiki_celdas = wiki_datos.findAll("td")
print(wiki_celdas[0:])
fila_1 = wiki_celdas[0:]
info_1 = [elemento.get_text() for elemento in fila_1]
print(fila_1)
print(info_1)
info_1[0] = int(float(info_1[0]))
print(info_1)
print("...............................")
num_or = [int(float(elem.findAll("td")[0].get_text())) for elem in wiki_filas[1:]]
palabras = [elem.findAll("td")[1].get_text().rstrip() for elem in wiki_filas[1:]]
frecuencia = [elem.findAll("td")[2].get_text().rstrip() for elem in wiki_filas[1:]]
print(num_or[0:])
print(palabras[0:])
print(frecuencia[0:])
from pandas import DataFrame
tabla = DataFrame([num_or, palabras, frecuencia]).T
tabla.columns = ["Núm. orden", "Palabras", "Frecuencia"]
print(tabla.head())
print(tabla)
print("...............................")
import nltk
nltk.download()
from nltk.corpus import stopwords
prep = stopwords.words('spanish')
print(prep)
所以我需要的是删除这段代码中包含的单词列表
stopwords.words('spanish')
来自"Palabras"列,只保留前500条记录(出现频率较高的词):
import nltk
nltk.download()
from nltk.corpus import stopwords
prep = stopwords.words('spanish')
提前致谢!
I managed to extract a list of words from a website and store them in
a dictionary.
注意:实际上,您将它们存储在数据框中。
您可以使用 isin
。您基本上想要获取列 'Palabras'
中的单词在停用词列表中的行。所以你只需要过滤那些行,然后使用 ~
取相反的行。由于它已经排序,只需使用 .head(500)
tabla = tabla[~tabla['Palabras'].isin(prep)].head(500)
此外,由于 html 包含 table
标签,我会考虑使用 pandas .read_html()
因为它在后台使用 beautifulsoup,但是为你辛勤工作。您的代码可以大大减少:
完整代码,相同结果:
import nltk
import pandas as pd
#nltk.download()
from nltk.corpus import stopwords
prep = stopwords.words('spanish')
print(prep)
tabla_beta = pd.read_html(wiki_url)[0]
tabla_beta.columns = ["Núm. orden", "Palabras", "Frecuencia"]
tabla_beta = tabla_beta[~tabla_beta['Palabras'].isin(prep)].head(500)
我设法从网站中提取了一个单词列表并将它们存储在 dataframe 中。现在我需要的是从 "Palabras" 列中删除其中一些单词,只保留前 500 条记录。
到目前为止,这是我的代码:
import requests
wiki_url = "https://es.wiktionary.org/wiki/Wikcionario:Frecuentes-(1-1000)-Subt%C3%ADtulos_de_pel%C3%ADculas"
wiki_texto = requests.get(wiki_url).text
from bs4 import BeautifulSoup
wiki_datos = BeautifulSoup(wiki_texto, "html")
wiki_filas = wiki_datos.findAll("tr")
print(wiki_filas[1])
print("...............................")
wiki_celdas = wiki_datos.findAll("td")
print(wiki_celdas[0:])
fila_1 = wiki_celdas[0:]
info_1 = [elemento.get_text() for elemento in fila_1]
print(fila_1)
print(info_1)
info_1[0] = int(float(info_1[0]))
print(info_1)
print("...............................")
num_or = [int(float(elem.findAll("td")[0].get_text())) for elem in wiki_filas[1:]]
palabras = [elem.findAll("td")[1].get_text().rstrip() for elem in wiki_filas[1:]]
frecuencia = [elem.findAll("td")[2].get_text().rstrip() for elem in wiki_filas[1:]]
print(num_or[0:])
print(palabras[0:])
print(frecuencia[0:])
from pandas import DataFrame
tabla = DataFrame([num_or, palabras, frecuencia]).T
tabla.columns = ["Núm. orden", "Palabras", "Frecuencia"]
print(tabla.head())
print(tabla)
print("...............................")
import nltk
nltk.download()
from nltk.corpus import stopwords
prep = stopwords.words('spanish')
print(prep)
所以我需要的是删除这段代码中包含的单词列表
stopwords.words('spanish')
来自"Palabras"列,只保留前500条记录(出现频率较高的词):
import nltk
nltk.download()
from nltk.corpus import stopwords
prep = stopwords.words('spanish')
提前致谢!
I managed to extract a list of words from a website and store them in a dictionary.
注意:实际上,您将它们存储在数据框中。
您可以使用 isin
。您基本上想要获取列 'Palabras'
中的单词在停用词列表中的行。所以你只需要过滤那些行,然后使用 ~
取相反的行。由于它已经排序,只需使用 .head(500)
tabla = tabla[~tabla['Palabras'].isin(prep)].head(500)
此外,由于 html 包含 table
标签,我会考虑使用 pandas .read_html()
因为它在后台使用 beautifulsoup,但是为你辛勤工作。您的代码可以大大减少:
完整代码,相同结果:
import nltk
import pandas as pd
#nltk.download()
from nltk.corpus import stopwords
prep = stopwords.words('spanish')
print(prep)
tabla_beta = pd.read_html(wiki_url)[0]
tabla_beta.columns = ["Núm. orden", "Palabras", "Frecuencia"]
tabla_beta = tabla_beta[~tabla_beta['Palabras'].isin(prep)].head(500)