目录
我们在读入数据的时候,数据本来有它自身的user_id,这行数据又是不进入模型训练的。我们怎么处理呢?
小点dian儿::读入文件的指定列,参数:usecols=["列名1',"列名2",.....],及前几行,
小点dian儿:存入数据的时候,我们希望保留了数据在系统的行名或者不保存,
我们在读入数据的时候,数据本来有它自身的user_id,这行数据又是不进入模型训练的。我们怎么处理呢?
是不是在训练模型的时候,把train数据集删去user_id,同时,在test数据集上也先删去user_id,得到预测结果后再加上呢?
显然上面不是一种好的方法,虽然我们我们需要顾及这个数据的id不是自变量,不能加入训练,又要顾及读入数据会默认有一个index(行id),0,1,2,3……我们可以不使用默认的index,认为指定行名,就像指定数据库的键值(要求唯一)。怎么办呢,
法一:文件读入阶段
在读入阶段的时候指定,其中一列为index,命令如下,index_col='列名',这个列是你所指定为行id所在列的名字。
df = pd.read_csv(filepath, sep=',',index_col='user_id')
我们打印输入一下:
df = pd.read_csv("C:/Users/train.csv", sep=',',index_col='user_id',nrows=5)
小点dian儿:,读入文件的几行,参数:nrows=行数
service_type is_mix_service online_time
user_id
Gx4sJzcQog01UhZL 4 0 85
kEXrhTiug93DIcLG 1 0 10
AouXr0EOUtSRdiYK 1 0 12
Yds7U30hnRZDiLtb 4 0 134
OFDTSXrhN9Q2mbVw 4 0 84
法二:在DateFrame阶段设置:
首先读入文件生成一个df:
>>> df = pd.read_csv("C:/Users/train.csv", sep=',',usecols=['service_type','online_tim
e','user_id'],nrows=5)
>>> df
service_type online_time user_id
0 4 85 Gx4sJzcQog01UhZL
1 1 10 kEXrhTiug93DIcLG
2 1 12 AouXr0EOUtSRdiYK
3 4 134 Yds7U30hnRZDiLtb
4 4 84 OFDTSXrhN9Q2mbVw
小点dian儿::读入文件的指定列,参数:usecols=["列名1',"列名2",.....],及前几行,
参数:nrows=行数。
命令:dfname.set_index("列名"), 指定行的名称对应的列名。但是这个命令是不对原有的DateFrame改变:
>>> df.set_index('user_id')
service_type online_time
user_id
Gx4sJzcQog01UhZL 4 85
kEXrhTiug93DIcLG 1 10
AouXr0EOUtSRdiYK 1 12
Yds7U30hnRZDiLtb 4 134
OFDTSXrhN9Q2mbVw 4 84
#df.set_index('user_id')是新生成的dateframe
>>> df
service_type online_time user_id
0 4 85 Gx4sJzcQog01UhZL
1 1 10 kEXrhTiug93DIcLG
2 1 12 AouXr0EOUtSRdiYK
3 4 134 Yds7U30hnRZDiLtb
4 4 84 OFDTSXrhN9Q2mbVw
#df并没有改变
如何对原有的df改变呢:
>>> df.set_index(["user_id"], inplace=True)
>>> df
service_type online_time
user_id
Gx4sJzcQog01UhZL 4 85
kEXrhTiug93DIcLG 1 10
AouXr0EOUtSRdiYK 1 12
Yds7U30hnRZDiLtb 4 134
OFDTSXrhN9Q2mbVw 4 84
完工。
小点dian儿:存入数据的时候,我们希望保留了数据在系统的行名或者不保存,
参数:index=None:
在我们不进行如上的设计的时候,系统或分配默认的行index:0,1,2..在我们将运行结果存入文件,如果不加以设置,将会把这一index列,存入数据文件。(我们已经做好如上涉及,我们希望user_id,和结果同时被记录,则不需要如下index是否存储的设置)
>>> df = pd.read_csv("C:/Users/train.csv", sep=',')
>>> df
service_type online_time user_id
0 4 85 Gx4sJzcQog01UhZL
1 1 10 kEXrhTiug93DIcLG
2 1 12 AouXr0EOUtSRdiYK
3 4 134 Yds7U30hnRZDiLtb
4 4 84 OFDTSXrhN9Q2mbVw
那这一行又是没有实际用处甚至在我们的csv或者excel这种本来就有表格索引的文件中是冗余的,那怎么办呢?
参数:index=None
df.to_csv(save_path, index=None)
# 保存计算结果,不保留原有df中的行名
def save_result(save_path, y_test_predict):
y_test_predict.to_csv(save_path, index=None)
return None