如何在csv文件中按频率对单词进行排序

voase2hg  于 2022-12-25  发布在  其他
关注(0)|答案(2)|浏览(126)

我有.csv文件,看起来像这样,但我想不出如何读取和排序的第一段的文件的单词的频率,它看起来像这样:

我只想对长度为“total_lines”的选定行进行排序,我已经在其他地方计算过了。我试过这段代码,但它没有给予我所需要的结果:

from collections import Counter

y = open(filename, 'r', newline='')
print(collections.Counter(y))

我也试过使用csv阅读器,但也无法管理。
这是文件的一部分:

UserScreenNameUserNameTimestampTextEmbedded_textEmojisCommentsLikesRetweetsImage,linkTweet,URLAjuntament,de,Calvià,de,Calvià
ene,Los,Reyes,Magos,ya,están,repartiendo,ilusión,por,#,Calvià,#,CabalgataDeReyesAjuntament,de,Calvià,de,Calvià
en,eLos,Reyes,magos,repartirán,más,de,kg,de,caramelos,#,SinGlúten,en,la,Gran,#,Cabalgata,de,CalviàNos,vemos,a,las,h,en,Palmanova,Ajuntament,de,Calvià,de,Calvià
ene,Buena,acogida,de,la,campaña,de,identificación,y,esterilización,de,el,gato,doméstico,en,CalviàAjuntament,de,Calvià,de,Calvià
ene,ha,extraído,unastoneladas,de,#residuossólidos,de,las,estaciones,de,bombeo,de,aguas,residuales,de,#,Calvià,(,EBAR,),durante,las,tareas,de,limpieza,en,profundidad,de,estas,instalacionesAjuntament,de,Calvià,de,Calvià
ene,Fotos,de,la,Gran,Cabalgata,de,#,Calvià,#IlusiónAjuntament,de,Calvià,de,Calvià
ene,Primera,presentación,de,el,avance,de,el,PGOU,de,#,Calvià,a,la,ciudadanía,#,Participación,#,Transparencia,Ajuntament,de,Calvià,de,Calvià
ene,Reunión,de,la,Alianza,deMunicipios,Turísticos,de,Sol,y,Playa,en,Fitur,Seguimos,trabajando,para,mejorar,nuestro,destino,#,Turismo,Ajuntament,de,Calvià,de,Calvià
ene,Entrega,de,premios,ITH,Smart,Destination,Awards,de,en,#FITUR,Ajuntament,de,Calvià,de,Calvià
ene,El,teniente,alcalde,de,turismo,se,reúne,con,el,director,de,la,oficina,española,de,turismo,en,Frankfurt,#,FiturAjuntament,de,Calvià,de,Calvià
ene,Seguimos,en,#,Fitur,trabajando,para,promocionar,#,Calvià,como,un,destino,lleno,de,oportunidades,durante,todo,el,año,Ajuntament,de,Calvià,de,Calvià
ene,En,#FITUR,entrevista,a,para,hablar,de,#,TurismoAjuntament,de,Calvià,de,Calvià
ene,ha,saludado,a,el,alumnado,de,Turismo,de,el,IES,Calvià,en,#,FiturAjuntament,de,Calvià,de,Calvià
ene,En,la,agenda,deencontrarás,todas,las,actividades,que,se,realizan,en,el,municipioNo,te,pierdas,nada,Ajuntament,de,Calvià,de,Calvià

UserScreenNameUserNameTimestampTextEmbedded_textEmojisCommentsLikesRetweetsImage,linkTweet,URLAjuntament,de,Calvià,de,Calvià
ene,el,Reyes,Magos,ya,estar,repartir,ilusión,por,#,Calvià,#,CabalgataDeReyesAjuntament,de,Calvià,de,Calvià
en,eLos,Reyes,mago,repartir,más,de,kg,de,caramelo,#,SinGlúten,en,el,Gran,#,Cabalgata,de,CalviàNos,ver,a,el,h,en,Palmanova,Ajuntament,de,Calvià,de,Calvià
ene,buen,acogida,de,el,campaña,de,identificación,y,esterilización,de,el,gato,doméstico,en,CalviàAjuntament,de,Calvià,de,Calvià
ene,haber,extraer,unastonelado,de,#residuossólidos,de,el,estación,de,bombeo,de,agua,residual,de,#,Calvià,(,EBAR,),durante,el,tarea,de,limpieza,en,profundidad,de,este,instalacionesAjuntament,de,Calvià,de,Calvià
ene,Fotos,de,el,Gran,Cabalgata,de,#,Calvià,#IlusiónAjuntament,de,Calvià,de,Calvià
ene,primero,presentación,de,el,avance,de,el,PGOU,de,#,Calvià,a,el,ciudadanía,#,Participación,#,Transparencia,Ajuntament,de,Calvià,de,Calvià
ene,Reunión,de,el,Alianza,deMunicipios,Turísticos,de,Sol,y,Playa,en,Fitur,seguir,trabajar,para,mejorar,nuestro,destino,#,Turismo,Ajuntament,de,Calvià,de,Calvià
ene,Entrega,de,premio,ITH,Smart,Destination,Awards,de,en,#FITUR,Ajuntament,de,Calvià,de,Calvià
ene,el,teniente,alcalde,de,turismo,él,reunir,con,el,director,de,el,oficina,español,de,turismo,en,Frankfurt,#,FiturAjuntament,de,Calvià,de,Calvià
ene,seguir,en,#,Fitur,trabajar,para,promocionar,#,Calvià,como,uno,destino,lleno,de,oportunidad,durante,todo,el,año,Ajuntament,de,Calvià,de,Calvià
ene,en,#FITUR,entrevista,a,para,hablar,de,#,TurismoAjuntament,de,Calvià,de,Calvià
ene,haber,saludar,a,el,alumnado,de,Turismo,de,el,IES,Calvià,en,#,FiturAjuntament,de,Calvià,de,Calvià
ene,en,el,agenda,deencontrar,todo,el,actividad,que,él,realizar,en,el,municipioNo,tú,perder,nada,Ajuntament,de,Calvià,de,Calvià

PROPN,PROPN,PROPN,ADP,PROPN,ADP,PROPN
ADP,DET,PROPN,PROPN,ADV,AUX,VERB,NOUN,ADP,PROPN,PROPN,PROPN,PROPN,ADP,PROPN,ADP,PROPN
ADP,PROPN,PROPN,NOUN,VERB,ADV,ADP,NUM,ADP,NOUN,NOUN,PROPN,ADP,DET,ADJ,PROPN,PROPN,ADP,PROPN,VERB,ADP,DET,NOUN,ADP,PROPN,PROPN,ADP,PROPN,ADP,PROPN
PUNCT,ADJ,NOUN,ADP,DET,NOUN,ADP,NOUN,CCONJ,NOUN,ADP,DET,NOUN,ADJ,ADP,PROPN,ADP,PROPN,ADP,PROPN
PROPN,AUX,VERB,ADJ,ADP,NOUN,ADP,DET,NOUN,ADP,NOUN,ADP,NOUN,ADJ,ADP,PROPN,PROPN,PUNCT,PROPN,PUNCT,ADP,DET,NOUN,ADP,NOUN,ADP,NOUN,ADP,DET,NOUN,ADP,PROPN,ADP,PROPN
PROPN,PROPN,ADP,DET,ADJ,PROPN,ADP,PROPN,PROPN,PROPN,ADP,PROPN,ADP,PROPN
PUNCT,ADJ,NOUN,ADP,DET,NOUN,ADP,DET,PROPN,ADP,PROPN,PROPN,ADP,DET,NOUN,PROPN,PROPN,PROPN,PROPN,PROPN,ADP,PROPN,ADP,PROPN
PUNCT,PROPN,ADP,DET,PROPN,PROPN,PROPN,ADP,PROPN,CCONJ,PROPN,ADP,PROPN,VERB,VERB,ADP,VERB,DET,NOUN,PROPN,PROPN,PROPN,ADP,PROPN,ADP,PROPN
PROPN,PROPN,ADP,NOUN,PROPN,PROPN,PROPN,PROPN,ADP,ADP,PROPN,PROPN,ADP,PROPN,ADP,PROPN
PUNCT,DET,NOUN,NOUN,ADP,NOUN,PRON,VERB,ADP,DET,NOUN,ADP,DET,NOUN,ADJ,ADP,NOUN,ADP,PROPN,PROPN,PROPN,ADP,PROPN,ADP,PROPN
PUNCT,VERB,ADP,NOUN,PROPN,VERB,ADP,VERB,NOUN,PROPN,SCONJ,DET,NOUN,ADJ,ADP,NOUN,ADP,DET,DET,NOUN,PROPN,ADP,PROPN,ADP,PROPN
PUNCT,ADP,DET,NOUN,ADP,ADP,VERB,ADP,PROPN,PROPN,ADP,PROPN,ADP,PROPN
PROPN,AUX,VERB,ADP,DET,NOUN,ADP,PROPN,ADP,DET,PROPN,PROPN,ADP,PROPN,PROPN,ADP,PROPN,ADP,PROPN
PUNCT,ADP,DET,NOUN,VERB,DET,DET,NOUN,PRON,PRON,VERB,ADP,DET,NOUN,PRON,VERB,PRON,PROPN,ADP,PROPN,ADP,PROPN

,,,,,,
,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,

预期输出应如下所示:

[('word1', freq1), ('word2', freq2), ('word3', freq3)...]
lkaoscv7

lkaoscv71#

因此,任务是从第二行到第一次出现空行读取CSV文件,并计算所有单词。
要读取CSV文件,您可以使用内置的csv.reader()。基本上返回的reader是一个 * 迭代器 *,它生成每行的列列表。因此,为了跳过第一行,我们可以只调用next()一次。我们可以手动迭代reader,直到它返回空列表,或者将itertools.takewhile()operator.truth()一起应用。要将所有单词直接传递到collections.Counter()构造函数中,我们可以使用chain.from_iterable(),它将扁平化从takewhile()返回的列表。要获得按频率排序的结果,我们可以使用Counter.most_common()

    • 代码:**
import csv
from itertools import takewhile, chain
from operator import truth
from collections import Counter

with open(r"CSV_100.csv") as f:
    reader = csv.reader(f)
    next(reader)  # skip first line
    counter = Counter(chain.from_iterable(takewhile(truth, reader)))
print(*counter.most_common())
    • 输出:**
('de', 55) ('CalviÃ\xa0', 32) ('#', 15) ('ene', 12) ('en', 11) ('el', 8) ('la', 7) ('Ajuntament', 6) ('a', 4) ('las', 4) ('para', 3) ('Reyes', 2) ('Gran', 2) ('Cabalgata', 2) ('y', 2) ('ha', 2) ('durante', 2) ('Fitur', 2) ('Seguimos', 2) ('trabajando', 2) ('destino', 2) ('Turismo', 2) ('#FITUR', 2) ('turismo', 2) ('se', 2) ('FiturAjuntament', 2) ('En', 2) ('Los', 1) ('Magos', 1) ('ya', 1) ('están', 1) ('repartiendo', 1) ('ilusión', 1) ('por', 1) ('CabalgataDeReyesAjuntament', 1) ('eLos', 1) ('magos', 1) ('repartirán', 1) ('más', 1) ('kg', 1) ('caramelos', 1) ('SinGlúten', 1) ('CalviÃ\xa0Nos', 1) ('vemos', 1) ('h', 1) ('Palmanova', 1) ('Buena', 1) ('acogida', 1) ('campaña', 1) ('identificación', 1) ('esterilización', 1) ('gato', 1) ('doméstico', 1) ('CalviÃ\xa0Ajuntament', 1) ('extraÃ\xaddo', 1) ('unastoneladas', 1) ('#residuossólidos', 1) ('estaciones', 1) ('bombeo', 1) ('aguas', 1) ('residuales', 1) ('(', 1) ('EBAR', 1) (')', 1) ('tareas', 1) ('limpieza', 1) ('profundidad', 1) ('estas', 1) ('instalacionesAjuntament', 1) ('Fotos', 1) ('#IlusiónAjuntament', 1) ('Primera', 1) ('presentación', 1) ('avance', 1) ('PGOU', 1) ('ciudadanÃ\xada', 1) ('Participación', 1) ('Transparencia', 1) ('Reunión', 1) ('Alianza', 1) ('deMunicipios', 1) ('TurÃ\xadsticos', 1) ('Sol', 1) ('Playa', 1) ('mejorar', 1) ('nuestro', 1) ('Entrega', 1) ('premios', 1) ('ITH', 1) ('Smart', 1) ('Destination', 1) ('Awards', 1) ('El', 1) ('teniente', 1) ('alcalde', 1) ('reúne', 1) ('con', 1) ('director', 1) ('oficina', 1) ('española', 1) ('Frankfurt', 1) ('promocionar', 1) ('como', 1) ('un', 1) ('lleno', 1) ('oportunidades', 1) ('todo', 1) ('año', 1) ('entrevista', 1) ('hablar', 1) ('TurismoAjuntament', 1) ('saludado', 1) ('alumnado', 1) ('IES', 1) ('agenda', 1) ('deencontrarás', 1) ('todas', 1) ('actividades', 1) ('que', 1) ('realizan', 1) ('municipioNo', 1) ('te', 1) ('pierdas', 1) ('nada', 1)
xxslljrj

xxslljrj2#

也许可以试试

words = []
with open('data.csv','r') as file:
    while line:=file.readline().rstrip(): #stop on end file or double new line
        words += line.split(',')
freq = {}
for word in set(words): 
    freq[word] = words.count(word)

print(freq)

print(sorted(freq.items(),key=lambda item:item[1]))

您的.csv文件似乎也有一堆错别字,如果这是一个问题,你还没有赶上。

相关问题