如何从.csv文件中拆分数据集以进行培训和测试?

时间:2017-04-29 15:13:22

标签: python csv split data-science

我正在使用Python,我需要将我的.csv导入数据分为两部分:训练和测试集,E.G 70%训练和30%测试。

我不断收到各种错误,例如'list' object is not callable等。

有没有简单的方法可以做到这一点?

由于

编辑:

代码是基本的,我只是想分割数据集。

from csv import reader
with open('C:/Dataset.csv', 'r') as f:
    data = list(reader(f)) #Imports the CSV
    data[0:1] ( data )

TypeError: 'list' object is not callable

3 个答案:

答案 0 :(得分:12)

您可以使用pandas

import pandas as pd
import numpy as np

df = pd.read_csv('C:/Dataset.csv')
df['split'] = np.random.randn(df.shape[0], 1)

msk = np.random.rand(len(df)) <= 0.7

train = df[msk]
test = df[~msk]

答案 1 :(得分:2)

您应该使用pandas模块中的true功能。它会将您的所有数据直接读入数据框,您可以进一步将数据分解为训练和测试。同样,您可以使用scikit-learn模块中的read_csv ()函数。

答案 2 :(得分:2)

更好的练习,也许更随机的是使用df.sample

from numpy.random import RandomState
import pandas as pd

df = pd.read_csv('C:/Dataset.csv')
rng = RandomState()

train = df.sample(frac=0.7, random_state=rng)
test = df.loc[~df.index.isin(train.index)]