今日用python导入数据进行建模时出现了N多错误,追踪到底还是源于我的粗心,数据预处理时以为把文字部分都替换掉了,结果还是漏了少数几个没找出原因。为找出这几个文字错误经历了好多“挫折”和“矛盾”啊。。。总结错误和原因。
导入数据
a = pd.read_table('D:\\test.txt',sep='|',index_col = 'ID')
出现错误
ValueError:Index ID invalid
出现这个错误可能是数据格式为UTF8,于是我用Notepad++将数据改为‘’以UTF-8无BOM格式编码‘’格式。于是又出现了以下的错误:
‘ascii’ codec can't decode byte 0xb5 in position 32:ordinal not in range(128)
百度了一下,又说是我编码的问题,百度建议是将数据改为UTF8格式,我就懵圈了,跟前面有矛盾啊,但还是进行了尝试,用Notepad++将数据改为‘’以UTF-8格式编码‘’格式,结果又回到了前面的格式,无奈,再次搜了下,出现用代码改为UTF8格式的,于是尝试了一下:
#在需要执行的*.py头部加上
importsys
reload(sys)
sys.setdefaultencoding('utf8')
还是出现了错误,不过出现的错误看得懂了,数据中存在“档”这个文字,于是我把“档”字删掉,还是出现前面提到的第一个错误,回过头想一下其中的逻辑,把数据格式重新转为‘’以UTF-8无BOM格式编码‘’格式,问题就解决了。
后话:归根结底是数据的问题,python对数据编码格式要求很严格,我检查了好多遍数据,没有什么问题,文字也替换了,结果还是文字问题,除了粗心问题还有就是数据量太大,直接查看看不出,所以可以运用第二步的代码将数据编码格式强制转为UTF8格式,这样报出来的错误显而易见,直接告诉你数据中存在哪些文字,你直接将文字替换为数字就好了,人工还是比不上计算机遍历的全面和仔细的。