【问题标题】:Pandas read_csv loads data into the wrong columnsPandas read_csv 将数据加载到错误的列中
【发布时间】:2017-09-07 10:05:00
【问题描述】:

我有一个包含四列的 CSV 文件。第一列中的每一行都包含一条推文,第二列包含相应的标签(其中一个字母 - A/N/Q/S - 分别代表可操作/不可操作/查询/建议)。所以第二列基本上包含了目标类。

第三和第四列还没有相关性。

我正在实现决策树分类器。

问题在于分类器还将一些推文视为标签。所以在预测的输出中,虽然我应该只得到 A、N、Q 或 S,但我也得到了一些推文以及这些标签。

以下是分类代码dtree_csv.py

from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.cross_validation import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.decomposition import PCA
import numpy as np
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer

try:
    df = pd.read_csv('tweet-class1.csv', header=None, sep=',',names=['tweets', 'class', 'dept', 'reply'],encoding='UTF-7',skipinitialspace=True)   # columns names if no header

    vect = TfidfVectorizer()
    x = vect.fit_transform(df['tweets'].values.astype('U')) 
    y = df['class']

    SIZE=50
    STEP=.02

    train,test,train_lab,test_lab=train_test_split(x,y,test_size=.15,random_state=100)

    clf=DecisionTreeClassifier()
    clf.fit(train,train_lab)

    output = clf.predict(test)
    for row in output:
        print row
    print accuracy_score(test_lab,output)

except UnicodeDecodeError as e:
    print 'unicode error'

在运行dtree_csv.py 时,这是我可以在终端上看到的输出。

我尝试了很多东西:

  • 使用不同的分隔符和定界符组合
  • 使用 TSV 代替 CSV
  • 将原始 .xls 文件重新导入 CSV
  • 在 UTF-7 和 UTF-8 之间切换编码
  • 手动扫描 CSV 文件以查找错误推文

似乎没有任何效果。请让我知道我错过了什么。

【问题讨论】:

    标签: python pandas csv


    【解决方案1】:

    当我尝试读取每行末尾带有逗号的 CSV 文件时,我也遇到了同样的问题。

    尝试将额外的 index_col=False 参数传递给您的 pd.read_csv 函数调用。

    【讨论】:

      【解决方案2】:

      我冒昧地猜测一下,您的一些推文包含逗号,而pandas 错误地将这些条目分成了错误的列。

      你可以做的一些事情

      1. 使用过滤器和df.isin删除所有此类列

        df = df[df['class'].isin(['A', 'N', 'Q', 'S'])]
        
      2. 删除无关的NaN

        df.dropna(inplace=True)
        

      另一种方法是手动更改 CSV 中的分隔符,或清除有问题的违规推文。如果您有能力丢失一些数据,您可能应该放弃它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-31
        • 2022-07-25
        • 1970-01-01
        • 2020-07-24
        • 2015-09-03
        • 1970-01-01
        • 2019-11-19
        相关资源
        最近更新 更多