【问题标题】:shuffle and split a data file into training and test set将数据文件打乱并拆分为训练和测试集
【发布时间】:2015-09-15 17:45:22
【问题描述】:

我正在尝试使用 pandas 和 numpy 将数据文件打乱并拆分为训练集和测试集,所以我做了以下操作:

import pandas as pd
import numpy as np 

data_path = "/path_to_data_file/"

train = pd.read_csv(data_path+"product.txt", header=0, delimiter="|")
ts =  train.shape 
#print "data dimension", ts
#print "product attributes \n", train.columns.values 


#shuffle data set, and split to train and test set. 
df = pd.DataFrame(train)
new_train = df.reindex(np.random.permutation(df.index))

indice_90_percent = int((ts[0]/100.0)* 90)

print "90% indice", indice_90_percent

#write train products to csv 
#new_train.to_csv(sep="|")

with open('train_products.txt', 'w') as f:
    for i in new_train[:indice_90_percent]:
        f.write(i+'\n')


with open('test_products.txt', 'w') as f:
    for i in new_train[indice_90_percent:]:
        f.write(i+'\n')

但是,我没有获得包含数据行的训练和测试文件,而是获得了两个包含列名称的文件。我错过了什么?

【问题讨论】:

  • 你正在遍历列名,行在new_train[indice_90_percent:].values
  • 这是因为从 df 返回的可迭代对象是列而不是行
  • @EdChum 我想遍历行,如何进行?
  • 抱歉你想写入文件每一行或indice_90_percent索引的整个df?
  • @MedAli,你可以用pandas写new_train[indice_90_percent:].to_csv('test_products.txt',header=False)

标签: python numpy pandas


【解决方案1】:

您可以使用to_csv 写入行,如果您不希望列名使用header=False

new_train[indice_90_percent:].to_csv('test_products.txt',header=False)
new_train[:indice_90_percent].to_csv('train_products.txt',header=False)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2021-05-09
    相关资源
    最近更新 更多