preface:最近在整內比賽mdd。遇到一些資料處理方面的事情,用python pandas是最為方便的,遠比我想象的強大。幾行**就完成了資料的處理,多個檔案的融合,再用sklearn裡面的模型跑一跑,就能得到結果。為此,經常記錄下來,對資料處理的應用。
df = pd.read_csv('%s/%s' % (input_path, file_name)):read_csv()讀入檔案函式,檔案以tab隔開則read_csv(filename, sep="\t")。分兩個變數:input_path和file_name傳入更佳。
poilngnotnull = pd.notnull(df["poi_lng"]):notnull()篩選函式。資料預處理:取列名為poi_lng不為空的行。
df.loc[poilngnotnull, 'poi_lng']:loc()函式。定位到poilngnotnull行,'poi_lng'列
df.loc[poilngnotnull, 'geohash'] = map(geo_hash, df.loc[poilngnotnull,poi_lat], df.loc[poilngnotnull, poi_lng]):loc()、map()、geo_hash()(見下面)函式的結合
取出經緯度,應用geo_hash函式,產生乙個geohash,寫到df新的列中
結果:df增加了一列,列名為geohash,其中每行的資料為每行對應的poilat、poilng通過python的geohash對映的值
pd.get_dummies(df):將df中非數字型別的進行one-hot編碼。參考: pandas使用get_dummies進行one-hot編碼(題外ps:使用xgboost訓練不好,one-hot編碼適合lr、svm之類的)
資料操作
讀入資料
df = pd.read_csv("filename")
df.columns = list('abcd')(讀取無列名的時候,可用陣列賦值)
列印資料
pandas.set_option('display.max_rows',none):參考dataframe的資料print輸出 顯示為...省略號
取資料loc
參考:python pandas.dataframe選取、修改資料最好用.loc,.iloc,.ix
取出某列資料:df["columns_name"]、df.loc[:, "columns_name"](第乙個引數表示所有行,第二個引數表示某列)
取出某些列資料:df[["columns_name1", "columns_name2"]]、df.loc[:,["
columns_name1
", "
columns_name2
"]]取出第n行資料:df.loc[n, :]
取出第2-n、第n+2到m行的資料:df.loc[[2:n, n+2lm], :]
取出第2-n行、某兩列的資料:df.loc[2:n, ["
columns_name1
", "
columns_name2
"]]iloc:若已知道columns_name是具體哪一列,可直接用數值代替。
data.iat[1, 1] 聚合
df = df.groupby(['date', 'hour', 'area_id']).agg().reset_index()
根據天、時、區域id進行聚合,統計溫度、風、雨量的平均值,然後用reset_index()重置
datatime
參考:python datetime處理時間
實現日期的加減:from datetime import timedelta. 參考:python 使用datetime模組timedelta實現日期時間相加
時間戳轉化:from datetime import *; date.fromtimestamp()
string datetime互轉
str = '2012-11-19';date_time = datetime.datetime.strptime(str,'%y-%m-%d')
date_time.strftime('%y-%m-%d');
python資料處理小技巧 2
1,拆分含有多種分隔符的字串 import re s sdjjg,jsa jjalg tjljl.ljei,jks dji 方法 使用s.split 分割單個符合 使用正規表示式的re.split 方法,一次性拆分字串,使用 號表示分割連續多個 newstr re.split r t s print...
資料處理函式
資料處理函式 1,計算字串長度 主流資料庫系統都提供了計算字串長度的函式,在mysql oracle db2中這個函式 名稱為length,而在mssqlserver中這個函式的名稱則為len。這個函式接受乙個字串類 型的字段值做為引數,返回值為這個字串的長度。下面的sql語句計算每乙個名稱不為空 ...
資料處理函式
1 lower 轉換小寫 2 upper 轉換大寫 3 substr 擷取子字串 4 length 取長度 例如查詢員工姓名長度為5的 5 trim 去空格,去掉的是首尾空格 6 to date 將字串轉換成日期 7 to char 將日期或數字轉換成字串 8 to number 將字串轉換成數字 ...