[踩坑系列]python数据处理
处理包含数据的文件
最近利用Python读取txt文件时遇到了一个小问题,就是在计算两个np.narray()类型的数组时,出现了以下错误:
TypeError: ufunc 'subtract' did not contain a loop with signature matching types dtype('
作为一个new Pythoner,遇到这个问题花了很多时间,最后终于解决了。
总结如下:
1.出现此问题的原因是:目的是想计算两个数组间的差值,但数组中的元素不是数据类型(float或者int等),而是str类型的。
2.解决方法:在为空数组添加数据过程中,将每个数据强制转化为float型
如:“character.append(dataSet[i][:-1])”修改为
“character.append([float(tk) for tk in dataSet[i][:-1]])”
处理文本文件,如情感识别类的文件
在进行文本的情感分类时,从电影评论数据集网站上下载数据集后,发现数据集中存在许多不需要的符号。
下载数据集后,所有txt文件存放在两个文件夹:“neg”(包含消极评论)和“pos”(包含积极地评论)中。
两者的存放目录如下:“F:\Self_Learning\机器学习\python\Bayes\review_polarity\txt_sentoken”。后面需要用到文件路径,此路径可根据自己存放目录修改。
主要涉及到的python操作有:多余字符的删除、文件夹中多文件的操作。
多余字符的删除
首先,我们要删除多余的符号,获得干净的数据。
经过查找资料,知道删除一条文本数据中不需要的符号,可以通过re.sub(chara,newChara,data)函数实现,其中chara是需要删除的字符,newChara是删除字符后相应位置的替换字符,data是需要操作的数据。比如下面的代码,指的是删除lines中包含的前面列出的字符,并用空白替换:
lineString = re.sub("[\n.!/_-$%^(+"')]+|[+—()?【】“”!:,;.?、~@#¥%…&()0123456789]+", " ", lines)
python对多文件的操作
下面的程序中,pathDirPos指的是所有积极评论的txt文件所在的目录,在此指的是“F:\Self_Learning\机器学习\python\Bayes\review_polarity\txt_sentoken\pos”。child就是获得的每个txt文件全名。
for allDir in pathDirPos:
child = os.path.join('%s' % allDir)
本文内容为之前收集自互联网,原址已不详,见谅,仅作为踩坑记录。
无视下面的图片链接,仅作为图链备忘语法写法