像excel一樣使用python,上一期介紹了生成、檢視、替換等功能,這一期介紹資料預處理,包括資料表合併、排序、分組等。
excel裡智慧型複製貼上來合併**,或者通過vlookup函式分步實現。python中,可以直接使用merge函式來合併兩個表,可選引數較多,這裡只介紹最常用的幾個引數:
df1.merge(df2,how='inner',on=none,left_on=none,right_on=none)
或:pandas.merge(df1,df2,how='inner'…)
將df1與df2合併,how為合併方式,有「inner、outer、left、right」4種選擇,分別為「求交集、並集、固定左邊、固定右邊」。on代表用於連線的鍵名,如果兩表合併物件的列名不同,使用left_on=none, right_on=none來分別指定。在預設情況下,merge會自動以重疊的列名按inner的方式合併。
importpandasaspd
frompandasimportdataframe,series
df1=dataframe()
df2=dataframe([['arx2','kana-a'],['arx3','kana-b'],
['arx4','pdm-v'],['arx5','pdm-v1']],
columns=['gene','homo'])
df_inner=pd.merge(df1,df2,how='inner',on='gene')
printdf_inner
輸出:gene size homo
0 arx2 530 kana-a
1 arx3 289 kana-b
2 arx4 450 pdm-v
在excel中,使用資料-排序可以對資料表直接進行排序。
資料-排序
在python中,可以使用sort_values和sort_index函式進行排序。
printdf1.sort_values(by=['size'])
輸出:gene size
2 arx3 289
0 arx1 411
3 arx4 450
1 arx2 530
而sort_index可以按索引進行排序。
df_inner.set_index('size')
#將size列作為索引df_inner.sort_index()
#使用索引進行排序
在excel中,使用「公式-插入函式-lookup-選擇分組列與分組條件」進行分組。
公式-插入函式-lookup-分組
在python中,使用where函式對值進行判斷。
df1['group']=np.where(df1['size'] >300,'long','short')
printdf1
輸出:gene size group
0 arx1 411 long
1 arx2 530 long
2 arx3 289 short
3 arx4 450 long
即將一列按固定規則分為多列。在excel中,可使用「資料-分列」進行分拆。
資料-分列
在python中,使用split函式。若以「-」為分隔符,對「homo」列中的所有元素進行分割,index與df2保持一致,列重新取名為「category」和「number」,則表示式如下:
df3=dataframe((x.split('-')forxindf2['homo']),index=df2.index,columns=['category','number'])
printdf3
輸出:category number
0 kana a
1 kana b
2 pdm v
3 pdm v1
按索引進行提取使用loc函式。
printdf1.loc[:2]
#提取從0至1的資料printdf1.loc[1]
#提取索引為1的資料
按位置提取,使用iloc函式,將橫縱方向標籤均從0開始計算。
printdf1.iloc[2,2]
#第三行第三列的資料printdf1.iloc[:3,:3]
#前三行前三列的資料
同時又按索引又按位置提取,使用ix函式。
df1=df1.set_index('gene')
#將gene設為索引列printdf1.ix[:'arx2',:3]
#索引arx2之前及0-2列部分
按條件提取,可使用isin函式。isin函式用來判斷是否為給定值,是返回「true」,否返回「false」。將isin函式巢狀如loc函式中,可以輸出結果為「true」的資料。
printdf1['group'].isin(['long'])
輸出:0 true
1 true
2 false
3 true
name: group, dtype: bool
printdf1.loc[df1['group'].isin(['long'])]
輸出:gene size group
0 arx1 411 long
1 arx2 530 long
3 arx4 450 long
excel中可以使用「資料-篩選」根據字段進行篩選。
資料-篩選
python中可使用與、或、非,」&」、」|」、」!=」和loc函式一起進行篩選。例如篩選size>400,homo帶有kana的資料:
printdf_inner.loc[(df_inner['size'] >400)&(df_inner['homo'].isin(['kana-a']))]
或者使用query函式進行搜尋。
printdf_inner.query('size>400')
本文參考:
python for data analysis
藍鯨**分析部落格,作者藍鯨(王彥平)
像Excel一樣使用Python(一)
在進行資料處理時,如果資料簡單,數量不多,excel是大家的首選。但是當資料眾多,型別複雜,需要靈活地顯示切片 進行索引 以及排序時,python會更加方便。借助python中的numpy和pandas庫,它能快速完成各種任務,包括資料的建立 檢查 清洗 預處理 提取 篩選 彙總 統計等。接下來幾篇...
像用excel一樣用pandas
預計需要15min閱讀此教材 本教材僅講述如何檢視excel資料,篩選,排序,查詢替換資料,不涉及excel中複雜的圖形繪製及樣式修改。假設,已經存在乙個test.xlsx檔案,僅包含乙個sheet,檔案內容如下。col1 col2 foo1 bar1 foo2 bar2 讀取乙個excel並賦值給...
像外行一樣思考,像專家一樣實踐
像外行一樣思考,像專家一樣實踐,不只是說說而已。題記 看了試讀的章節有些日子,看完了試讀部分,其中一部分是能和我共鳴,還有一部分觀點,自己也比較贊成,但貌似又有些抽象。我想,書不單是用來讀的,讀一本好書,就像吃肉一樣,吸收書中的營養,把營養轉換為自己的血液,直到骨髓中,成為生命中的一部分。像外行一樣...