【问题标题】:Python Pandas CSV import / Unicode woesPython Pandas CSV 导入/Unicode 问题
【发布时间】: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


【解决方案1】:

我认为您需要检查DataFrame 中的NaN 值,该值是从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++ 并检查这些有问题的行。

【讨论】:

  • 问题最终是测试数据集中有许多(尾随)空行。这就是调用 print test.isnull().sum() 返回如此大数字的原因。因此,我使用记事本手动删除了这些尾随值,并使用 train = train.dropna() 和 test=test.dropna() 删除了其余的缺失值。这似乎奏效了。现在进入令人兴奋的部分——数据分析!再次感谢您的帮助!
  • 很高兴能为您提供帮助。美好的一天!
猜你喜欢
  • 1970-01-01
  • 2016-07-02
  • 1970-01-01
  • 2012-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-17
相关资源
最近更新 更多