目錄
我們在讀入數據的時候,數據本來有它自身的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