Python编程实现csv文件某一列的词频统计

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python编程实现csv文件某一列的词频统计相关的知识,希望对你有一定的参考价值。

我有一个csv文件,第三列是一些评论,想请教您该如何实现对该列的词频统计,谢谢!

import re
import collections
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
#为避免出问题,文件名使用全路径
data = pd.read_csv('XXX.csv')
trainheadlines = []
for row in range(0, len(data.index)):
trainheadlines.append(' '.join(str(x) for x in data.iloc[row, m:n]))
#上面的m:n代表取那一列,或者那几列。

advancedvectorizer = TfidfVectorizer(
min_df=0, max_df=1, max_features=20000, ngram_range=(1, 1))
advancedtrain = advancedvectorizer.fit_transform(trainheadlines)
print(advancedtrain.shape)
参考技术A 如果是用户输入关键词,计算关键词的词频。这个好做,如果是要程序自己分析词来做词频统计,这个非常难。追问

要的就是第二个啊

python如何根据csv中一列的内容对另一列进行写入

附图。pid是索引代码,text是测试用的文字,ldalabel是我想写入的那一列。我自己建了一个自然语言处理的model,model(text)处理每行文字后会返回1到25的整型数(目的是对每个文档贴标签)。我现在想根据text这列,把每一行丢入模型model(text)后讲输出的数字写入第三列ldalabel再输出。求问代码该如何写?
自然语言处理的模型已经建好,主要只是想问循环每一行处理后写入第三列的代码

"""
请参考
python列表切片读取csv数据计算导购客单价.py
题目来源 https://github.com/FGFW/FCNNIC
依山居 19:44 2015/11/22
计算公式为:
导购日客单价=导购日成交金额/日客单数
每个相同的单据编号为1单,也就是去重后得到该导购的日客单数
导购日成交金额=导购完成的日所有单总和,也可以小计中倒数第二列直接提取
要求:计算出CSV表格中每位导购每天的客单价.
总结:这个版本要计算多个日期,逻辑复杂度多了一层,
忍不住写很了很多列表解析过滤,代码行数少,但是可读性和维护性应该差。
"""
with open("2014.08.01-2014.09.30零售数据.csv") as f:
    txt=[r.rstrip("\\n").split(",") for r in f.readlines()]
dg=r[0] for r in txt if (r[0]!='') and ("普通零售" in r[5])
dg=sorted(dg)
for d in dg:
    date=r[1] for r in txt if (d in r[0]) and ("-" in r[1])
    date=sorted(date)
    for t in date:
        导购成交金额=sum([float(s[-3]) for s in txt if (d in s[0] and (t in s[1]) and s[-3]!='')])
        日单数=len(s[2] for s in txt if (d in s[0] and (t in s[1]) and s[-3]))
        导购客单价=导购成交金额/日单数
        print(d,"%s 成交额:%4.2f 客单价:%2.2f 日单数:%2d" %(t,导购成交金额,导购客单价,日单数))
 
 
try:
    input("按回车退出")
except SyntaxError:
    pass
 
"""
输出:
...
顾意珍 2014-09-13 成交额:539.00 客单价:26.95 日单数:20
顾意珍 2014-09-14 成交额:397.00 客单价:22.06 日单数:18
黎丽群 2014-08-15 成交额:489.00 客单价:19.56 日单数:25
...
"""

参考技术A # -*- coding: utf8 -*-
import csv
l = [['1', 'Wonderful Spam'],['2', 'Lovely Spam']]
#模拟数据写入一个csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=',',
                            quotechar='"', quoting=csv.QUOTE_MINIMAL)
    for row in l:
        spamwriter.writerow(row)
#从文件读取
l=[]
with open('eggs.csv', newline='') as csvfile:
     spamreader = csv.reader(csvfile, delimiter=',', quotechar='"')
     for row in spamreader:
         l = l + [row]
#把两列拼接增加为第三列写回到文件
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=',',
                            quotechar='"', quoting=csv.QUOTE_MINIMAL)
    for row in l:
        print(row)
        spamwriter.writerow(row + [row[0]+row[1]])

本回答被提问者和网友采纳
参考技术B 用字典进行存储处理。

以上是关于Python编程实现csv文件某一列的词频统计的主要内容,如果未能解决你的问题,请参考以下文章

利用Python读取CSV文件并计算某一列的均值和方差

Python如何读取csv文件某一列的每一行数据,并判断该数值是不是满足条件?

求助,python如何在csv插入一列的问题

python如何根据csv中一列的内容对另一列进行写入

python 读取多个csv文件中某一列,并生成一个新csv文件

用python读取一个文件夹下的所有CSV文件里某一列数据中最大值,将此最大值所在行截取到新CSV文件中?