【发布时间】:2016-10-08 13:19:56
【问题描述】:
我正在处理留言板帖子(包含在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')`
我不确定这里有一个直接的问题,但我希望有人看到我做错了什么。
任何想法将不胜感激。
【问题讨论】:
-
如果不保密,是否可以分享您的
csvs? -
不幸的是,我认为它确实算作机密。有什么特别要找的吗?我可以先看看并报告。
-
是的。默认为“,”,来自 pandas 文档:
-
实际上,这里是从 pandas 的 read_csv 文档中摘录的: sep : str, default ‘,’ Delimiter to use。如果 sep 为 None,将尝试自动确定这一点。长度超过 1 个字符且与“s+”不同的分隔符将被解释为正则表达式,将强制使用 python 解析引擎并忽略数据中的引号。正则表达式示例:'rt'
-
嗯,如果问题是为什么
NaN值在csv中,那么我认为您需要检查这些有问题的行 - 使用print (df[df.isnull().any(1)])- 过滤其中至少有一个 NaN 值的所有行某列。
标签: python csv pandas classification