如何使用python读取特定的csv文件列

时间:2015-08-03 18:20:20

标签: python csv numpy scikit-learn

我是Scikit-Learn的新手,我想将已经标记的数据集合转换为数据集。我已将数据的.csv文件转换为NumPy数组,但我遇到的一个问题是根据第二列中是否存在标志将数据分类为训练集。我想知道如何使用Pandas Utility Module访问.csv文件的特定行,列。以下是我的代码:

    import numpy as np
    import pandas as pd
    import csv
    import nltk
    import pickle
    from nltk.classify.scikitlearn import SklearnClassifier
    from sklearn.naive_bayes import MultinomialNB,BernoulliNB
    from nltk.classify import ClassifierI
    from statistics import mode




    def numpyfy(fileid):
         data = pd.read_csv(fileid,encoding = 'latin1')
         #pd.readline(data)
         target = data["String"]
         data1 = data.ix[1:,:-1]
         #print(data)
         return data1
    def learn(fileid):
         trainingsetpos = []
         trainingsetneg = []
         datanew = numpyfy(fileid)
         if(datanew.ix['Status']==1):
            trainingsetpos.append(datanew.ix['String'])
         if(datanew.ix['Status']==0):
            trainingsetneg.append(datanew.ix['String'])

    print(list(trainingsetpos))

1 个答案:

答案 0 :(得分:0)

您可以使用boolean indexing拆分数据。像

这样的东西
import pandas as pd


def numpyfy(fileid):
    df = pd.read_csv(fileid, encoding='latin1')
    target = df.pop('String')
    data = df.ix[1:,:-1]
    return target, data


def learn(fileid):
    target, data = numpyfy(fileid)
    trainingsetpos = data[data['Status'] == 1]
    trainingsetneg = data[data['Status'] == 0]

    print(trainingsetpos)