Pandas匯入資料後的,關於特徵合併的細節
datapath = 'data/'
train_df = pd.read_csv(datapath+'yancheng_train_20171226.csv')
test_df = pd.read_csv(datapath+'yancheng_testA_20171225.csv')
train_sum10=train_df[(train_df.sale_date==201710)].groupby(['class_id']).sale_quantity.sum().round()
predicted=train_sum10.reset_index()
#資料合併
result.fillna(0)
result.columns=['predict_date','class_id','predict_quantity']
result.to_csv('result_201710.csv',index=False,header=True)
開學以後,開始著手深挖資料處理的程式碼細節。
#pandas contact 之後,一定要記得用reset_index去處理index,不然容易出現莫名的邏輯錯誤
#result = pd.concat(frames) 這句話改成 result = pd.concat(frames,ignore_index=True),就可以解決了。
merge
用於通過一個或多個鍵將兩個資料集的行連線起來,類似於 SQL 中的 JOIN。該函式的典型應用場景是,針對同一個主鍵存在兩張包含不同欄位的表,現在我們想把他們整合到一張表裡。在此典型情況下,結果集的行數並沒有增加,列數則為兩個元資料的列數和減去連線鍵的數量。
on=None 用於顯示指定列名(鍵名),如果該列在兩個物件上的列名不同,則可以通過 left_on=None, right_on=None 來分別指定。或者想直接使用行索引作為連線鍵的話,就將 left_index=False, right_index=False 設為 True。
how='inner' 引數指的是當左右兩個物件中存在不重合的鍵時,取結果的方式:inner 代表交集;outer 代表並集;left 和 right 分別為取一邊。
suffixes=('_x','_y') 指的是當左右物件中存在除連線鍵外的同名列時,結果集中的區分方式,可以各加一個小尾巴。
對於多對多連線,結果採用的是行的笛卡爾積。引數說明:
left與right:兩個不同的DataFrame
how:指的是合併(連線)的方式有inner(內連線),left(左外連線),right(右外連線),outer(全外連線);預設為inner
on : 指的是用於連線的列索引名稱。必須存在右右兩個DataFrame物件中,如果沒有指定且其他引數也未指定則以兩個DataFrame的列名交集做為連線鍵
left_on:左則DataFrame中用作連線鍵的列名;這個引數中左右列名不相同,但代表的含義相同時非常有用。
right_on:右則DataFrame中用作 連線鍵的列名
left_index:使用左則DataFrame中的行索引做為連線鍵
right_index:使用右則DataFrame中的行索引做為連線鍵
sort:預設為True,將合併的資料進行排序。在大多數情況下設定為False可以提高效能
suffixes:字串值組成的元組,用於指定當左右DataFrame存在相同列名時在列名後面附加的字尾名稱,預設為('_x','_y')
copy:預設為True,總是將資料複製到資料結構中;大多數情況下設定為False可以提高效能
indicator:在 0.17.0中還增加了一個顯示合併資料中來源情況;如只來自己於左邊(left_only)、兩者(both)