Python Pandas CSV导入/ Unicode困境

时间:2016-06-08 10:17:41

标签: python csv pandas classification

我正在处理留言板帖子(包含在CSV文件中),尝试在训练分类模型之前清理数据/等。

事情进展顺利,直到我得到:

  

TypeError:'float'对象不可迭代

回应这一行:

letters_only = ''.join([i for i in textToProcess if not i.isdigit()])

textToProcess来自(train["text"][i])

所以......当我打算通过拨打电话来查看我的数据时:

print train.isnull().sum()
print test.isnull().sum()

我得到了以下输出:

id          0
category    0
title       0
text        1
train       26
dtype:      int64
id          5512
category    5512
title       5512
text        5512
train       5512
dtype: int64

问题:所以我认为这意味着在测试集中,每列中有5512个空值?

这很奇怪,因为直到这一点,进口等似乎大部分都表现出预期。例如,拨打例如train["text"][0]产生了预期的输出(即文本)。

如果有帮助,我原来的read_csv导入调用看起来像:

train = pd.read_csv(full_train_filename, header=0, encoding = 'utf-8')

test = pd.read_csv(full_test_filename, header=0, encoding = 'utf-8')`

我不确定这里有一个直接的问题,但我希望有人看到我做错了。

任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为您需要检查NaN中的DataFrame值,该值来自csv。您可以将isnullanyboolean indexing

一起使用
test[test.isnull().any(1)]

样品:

import pandas as pd
import numpy as np

test = pd.DataFrame({'a': {0: 'r', 1: 'r', 2: 't', 3: 'y'}, 
                     'b': {0: 'a', 1: 'a', 2: 's', 3: 'g'}, 
                     'c': {0: 7.0, 1: 5.0, 2: np.nan, 3: 4.0}})
print (test)
   a  b    c
0  r  a  7.0
1  r  a  5.0
2  t  s  NaN
3  y  g  4.0

print (test[test.isnull().any(1)])
   a  b   c
2  t  s NaN

然后你可以使用一些文本编辑器,例如Notepad++并检查这些有问题的行。