1、处理包含数据的文件

最近利用Python读取txt文件时遇到了一个小问题,就是在计算两个np.narray()类型的数组时,出现了以下错误:

TypeError: ufunc 'subtract' did not contain a loop with signature matching types dtype('

作为一个Python新手,遇到这个问题后花费了挺多时间,在网上找了许多大神们写的例子,最后终于解决了。

总结如下:

(1)出现此问题的原因是:目的是想计算两个数组间的差值,但数组中的元素不是数据类型(float或int等),而是str类型的。

(2)解决方法:在为空数组添加数据过程中,将每个数据强制转化为float型。

如将“character.append(dataSet[i][:-1])”修改为“ character.append([float(tk) for tk in dataSet[i][:-1]])”

现将利用Python读取txt文件的过程总结如下:

python版本为python3.6

(1)函数定义,存放于Function.py文件中:

from numpy import *

import random

#读取数据函数,返回list类型的训练数据集和测试数据集

def loadData(fileName):

trainingData=[]

testData=[]

with open(fileName) as txtData:

lines=txtData.readlines()

for line in lines:

lineData=line.strip().split(',') #去除空白和逗号“,”

if random.random()<0.7: #数据集分割比例

trainingData.append(lineData) #训练数据集

else:

testData.append(lineData) #测试数据集

return trainingData,testData

#输入数据为list类型,分割数据集,分割为特征和标签两部分,返回数据为np.narray类型

def splitData(dataSet):

character=[]

label=[]

for i in range(len(dataSet)):

character.append([float(tk) for tk in dataSet[i][:-1]])

label.append(dataSet[i][-1])

return array(character),array(label)

(2)实现两个数组间的减法,存放于main.py文件中:

#__author__=='qustl_000'

#-*- coding: utf-8 -*-

import numpy as np

import Function

fileName="1.txt"

trainingData,testData=Function.loadData(fileName)

trainingCharacter,trainingLabel=Function.splitData(trainingData)

testCharacter,testLabel=Function.splitData(testData)

diff1=np.tile(testCharacter[0],(len(trainingCharacter),1))-trainingCharacter

print('测试数据集的一条数据,扩充到与训练数据集同维:')

print(np.tile(testCharacter[0],(len(trainingCharacter),1)))

print('训练数据集:')

print(trainingCharacter)

print('作差后的结果:')

print(diff1)

(3)运行结果:

测试数据集的一条数据,扩充到与训练数据集同维:

[[ 1.5 60. ]

[ 1.5 60. ]

[ 1.5 60. ]

[ 1.5 60. ]

[ 1.5 60. ]

[ 1.5 60. ]

[ 1.5 60. ]

[ 1.5 60. ]

[ 1.5 60. ]

[ 1.5 60. ]

[ 1.5 60. ]

[ 1.5 60. ]

[ 1.5 60. ]]

训练数据集:

[[ 1.5 40. ]

[ 1.5 50. ]

[ 1.6 40. ]

[ 1.6 50. ]

[ 1.6 60. ]

[ 1.6 70. ]

[ 1.7 60. ]

[ 1.7 70. ]

[ 1.7 80. ]

[ 1.8 60. ]

[ 1.8 80. ]

[ 1.8 90. ]

[ 1.9 90. ]]

作差后的结果:

[[ 0. 20. ]

[ 0. 10. ]

[ -0.1 20. ]

[ -0.1 10. ]

[ -0.1 0. ]

[ -0.1 -10. ]

[ -0.2 0. ]

[ -0.2 -10. ]

[ -0.2 -20. ]

[ -0.3 0. ]

[ -0.3 -20. ]

[ -0.3 -30. ]

[ -0.4 -30. ]]

数据集如下:

1.5,40,thin

1.5,50,fat

1.5,60,fat

1.6,40,thin

1.6,50,thin

1.6,60,fat

1.6,70,fat

1.7,50,thin

1.7,60,thin

1.7,70,fat

1.7,80,fat

1.8,60,thin

1.8,70,thin

1.8,80,fat

1.8,90,fat

1.9,80,thin

1.9,90,fat

2、处理文本文件,如情感识别类的文件

在进行文本的情感分类时,从电影评论数据集网站上下载数据集后,发现数据集中存在许多不需要的符号。截取部分包含多余字符的数据如下:

下载数据集后,所有txt文件存放在两个文件夹:“neg”(包含消极评论)和“pos”(包含积极地评论)中。

两者的存放目录如下:“F:\Self_Learning\机器学习\python\Bayes\review_polarity\txt_sentoken”。后面需要用到文件路径,此路径可根据自己存放目录修改。

主要涉及到的python操作有:多余字符的删除、文件夹中多文件的操作。

2.1 多余字符的删除

首先,我们要删除多余的符号,获得干净的数据。

经过查找资料,知道删除一条文本数据中不需要的符号,可以通过re.sub(chara,newChara,data)函数实现,其中chara是需要删除的字符,newChara是删除字符后相应位置的替换字符,data是需要操作的数据。比如下面的代码,指的是删除lines中包含的前面列出的字符,并用空白替换:

lineString = re.sub("[\n\.\!\/_\-$%^*(+\"\')]+|[+—()?【】“”!:,;.?、~@#¥%…&*()0123456789]+", " ", lines)

2.2 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)

2.3 电影评论数据集预处理

下面给出对于电影评论数据集的预处理程序(python3.6).

'''获取数据,并去除数据中的多余符号,返回list类型的数据集'''

def loadData(pathDirPos,pathDirNeg):

posAllData = [] # 积极评论

negAllData = [] # 消极评论

# 积极评论

for allDir in pathDirPos:

lineDataPos = []

child = os.path.join('%s' % allDir)

filename = r"review_polarity/txt_sentoken/pos/" + child

with open(filename) as childFile:

for lines in childFile:

lineString = re.sub("[\n\.\!\/_\-$%^*(+\"\')]+|[+—()?【】“”!:,;.?、~@#¥%…&*()0123456789]+", " ", lines)

line = lineString.split(' ') #用空白分割每个文件中的数据集(此时还包含许多空白字符)

for strc in line:

if strc != "" and len(strc) > 1: #删除空白字符,并筛选出长度大于1的单词

lineDataPos.append(strc)

posAllData.append(lineDataPos)

# 消极评论

for allDir in pathDirNeg:

lineDataNeg = []

child = os.path.join('%s' % allDir)

filename = r"review_polarity/txt_sentoken/neg/" + child

with open(filename) as childFile:

for lines in childFile:

lineString = re.sub("[\n\.\!\/_\-$%^*(+\"\')]+|[+—()?【】“”!:,;.?、~@#¥%…&*()0123456789]+", " ", lines)

line = lineString.split(' ') #用空白分割每个文件中的数据集(此时还包含许多空白字符)

for strc in line:

if strc != "" and len(strc) > 1: #删除空白字符,并筛选出长度大于1的单词

lineDataNeg.append(strc)

negAllData.append(lineDataNeg)

return posAllData,negAllData

'''划分数据集,将数据集划分为训练数据和测试数据,参数splitPara为分割比例'''

def splitDataSet(pathDirPos,pathDirNeg,splitPara):

trainingData=[]

testData=[]

traingLabel=[]

testLabel=[]

posData,negData=loadData(pathDirPos,pathDirNeg)

pos_len=len(posData)

neg_len=len(negData)

#操作积极评论数据

for i in range(pos_len):

if(random.random()

trainingData.append(posData[i])

traingLabel.append(1)

else:

testData.append(posData[i])

testLabel.append(1)

for j in range(neg_len):

if(random.random()

trainingData.append(negData[j])

traingLabel.append(0)

else:

testData.append(negData[j])

testLabel.append(0)

return trainingData,traingLabel,testData,testLabel

以上这篇对python .txt文件读取及数据处理方法总结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

python怎么读取txt数据_对python .txt文件读取及数据处理方法总结相关推荐

  1. python二进制文件 删除尾部数据_在Python中读取和切片二进制数据文件的最快方法...

    我有一个处理脚本,用于提取"uint16"类型的二进制数据文件,并一次以6400块的形式进行各种处理.该代码最初是用Matlab编写的,但由于分析代码是用 Python编写的,我们 ...

  2. python读取hdf-eos5数据_《Python和HDF 5大数据应用》——2.4 你的第一个HDF5文件-阿里云开发者社区...

    本节书摘来自异步社区<Python和HDF 5大数据应用>一书中的第2章,第2.4节,作者[美]Andrew Collette(科莱特),胡世杰 译,更多章节内容可以访问云栖社区" ...

  3. python读取游戏数据_用Python抓取并分析了1982场英雄联盟数据,教你开局前预测游戏对局胜负!...

    英雄联盟想必大多数读者不会陌生,这是一款来自拳头,由腾讯代理的大型网络游戏,现在一进网吧,你就能发现一大片玩英雄联盟的人.在2017年中国战队无缘鸟巢的世界总决赛后,一大片人选择了弃游,只是终究没躲过 ...

  4. python从sqlserver提取数据_通过Python读取sqlserver数据写成json文件的总结

    最近在做将sqlserver的数据迁移到redshift上面,然后再做的过程当中出现了很多问题.(通过sqlserver 读取数据,然后写成json文件然后长传到S3上面,然后通过S3copy的形式将 ...

  5. 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...

    数据挖掘入门与实战 公众号: datadw 本文讲述如何利用Python模拟淘宝的搜索过程并对搜索结果进行初步的数据可视化分析. 搜索过程的模拟:淘宝的搜索页面有两种形式, 一种形式是, 2019/2 ...

  6. python爬取餐饮数据_使用 Python 分析全国所有必胜客餐厅

    本文原创发布于微信公众号「极客猴」,欢迎关注第一时间获取更多原创分享 在之前的一篇文章中,我讲到如何爬取必胜客官网中全国各大城市餐厅的信息.虽然餐厅数据信息被抓取下来,但是数据一直在硬盘中" ...

  7. python根据url下载数据_利用Python如何实现根据URL地址下载并保存文件至对应目录...

    利用Python如何实现根据URL地址下载并保存文件至对应目录 发布时间:2020-11-16 14:23:11 来源:亿速云 阅读:58 作者:Leah 这篇文章将为大家详细讲解有关利用Python ...

  8. python爬取客流数据_【python爬取雅虎财经数据】“五一”和广交会客流叠加 广州出入境客流呈“双高峰”...

    [python爬取雅虎财经数据]"五一"和广交会客流叠加 广州出入境客流呈"双高峰" 发布时间:2020-10-13 18:06:00 阅读量:650 作者:乔 ...

  9. java读取hadoop数据_从Hadoop URL中读取数据_hadoop 数据读取_hadoop读取文件

    3.5  Java接口 在本小节,我们要深入探索Hadoop的Filesystem类:与Hadoop的文件系统交互的API. 虽然我们主要关注的是HDFS的实现DistributedFileSyste ...

  10. python往npy写入数据_操作python实现npy格式文件转换为txt文件

    如下代码会将npy的格式数据读出,并且输出来到控制台:import numpy as np ##设置全部数据,不输出省略号 import sys np.set_printoptions(thresho ...

最新文章

  1. mysql的主从复制原理
  2. Scalaz(58)- scalaz-stream: fs2-并行运算示范,fs2 parallel processing
  3. who initialize the request for abap.js in SAP UI5
  4. core identity mysql_Microsoft.AspNetCore.Identity 使用 mysql 报错处理
  5. LeetCode 1712. 将数组分成三个子数组的方案数(前缀和 + 二分查找)
  6. 5件最灵异的事~~~~~~~~~~~~~~~~~~转
  7. (组合数学笔记)Pólya计数理论_Part.10_Pólya定理的推广——De Bruijn定理的母函数形式
  8. Java讲课笔记26:File类
  9. 跨平台日志清理工具 Log-Cutter v2.0.1 RC-1 发布
  10. 计算机机房网络布线方案,计算机机房布线方案与机房的环境要求
  11. composer如何进行安装和使用
  12. Intel 80286微处理器功能结构
  13. Adobe Illustrator【印前角线X2.0】脚本源码
  14. QT 小数位有效数显示
  15. Python分析双色球,中大奖指日可待
  16. python数据分析与可视化从入门到精通_零基础学Python爬虫、数据分析与可视化从入门到精通...
  17. 【服务器数据恢复】存储raid5磁盘阵列数据恢复案例
  18. 一文看懂网络安全五年之巨变
  19. 程序员不得不学的操作系统知识(二)
  20. winform屏蔽鼠标事件

热门文章

  1. java栅栏_Java并发工具类(栅栏CyclicBarrier)
  2. 计算机专业保研英语自我介绍,计算机保研面试英文自我介绍.doc
  3. 携程2021年校招笔试题[2021年10月21日19点-21点]
  4. postman使用之Tests使用
  5. Qt学习——聊天的QQ列表QToolBox类
  6. built a JNCIS LAB系列:Chapter 4 BGP
  7. Qt编写的知名的开源软件汇总
  8. 团队展示——我说的都队
  9. 关于Kali使用aireplay-ng时出现设备繁忙的解决(转自 zpblog.cn)
  10. Arcpro进行卫星影像融合