數(shù)據(jù)分析應用項目化教程(Python) 課件 任務6.2 數(shù)據(jù)合并和連接_第1頁
數(shù)據(jù)分析應用項目化教程(Python) 課件 任務6.2 數(shù)據(jù)合并和連接_第2頁
數(shù)據(jù)分析應用項目化教程(Python) 課件 任務6.2 數(shù)據(jù)合并和連接_第3頁
數(shù)據(jù)分析應用項目化教程(Python) 課件 任務6.2 數(shù)據(jù)合并和連接_第4頁
數(shù)據(jù)分析應用項目化教程(Python) 課件 任務6.2 數(shù)據(jù)合并和連接_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第六章使用pandas進行數(shù)據(jù)清洗和整理

任務6.2數(shù)據(jù)合并和連接concat合并append合并merge連接join連接combine_first和combine填充合并concat合并使用某種合并方式(inner/outer)沿著某個軸向(axis=0/1)將多個對象進行堆疊把多個Pandas對象(DataFrame/Series)合并成一個concat合并pandas.concat(objs,axis=0,join='outer',‘join_axes=None’,ignore_index=False,‘keys=None’)objs:一個列表,要進行拼接的pandas對象,可以是DataFrame或者Series,可以混合axis:指定對象按照那個軸進行拼接,默認為0(縱向拼接),1為橫向拼接join:拼接的方式,inner為交集,outer為并集join_axes:index的列表,僅在橫向合并時使用,指明要將數(shù)據(jù)合并入哪個原表的indexignore_index:如果設置為true,則無視表原來的軸標簽,合并后生成新的軸標簽keys:表標識的列表,用來區(qū)分合并的表來自哪里concat合并-按行pd.concat(frames):默認參數(shù)的concat,按行合并,參數(shù)為axis=0、join=outer、ignore_index=Falseconcat合并-按行pd.concat(frames,keys=['x','y','z'])使用keys標識表concat合并-按列pd.concat([df1,df4],axis=1)按列合并,axis=1pd.concat([df1,df4],axis=1,join='inner')#按行索引相同合并列append合并append語法:DataFrame.append(other,ignore_index=False)append只有按行合并,沒有按列合并,相當于concat按行的簡寫形式other:單個dataframe、series、dict,或者列表ignore_index:是否忽略掉原來的數(shù)據(jù)索引merge連接Pandas的Merge,相當于Sql的Join,將不同的表按key關聯(lián)到一個表。merge的語法:pd.merge(left,right,how='inner',on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=True,suffixes=('x','y'),copy=True,indicator=False,validate=None)left,right:要連接的dataframe或者Serieshow:join類型,'left','right','outer','inner'on:join的key,left和right都需要有這個keyleft_on:left的df或者series的keyright_on:right的df或者seires的keyleft_index,right_index:使用index而不是普通的column做joinsuffixes:兩個元素的后綴,如果列有重名,自動添加后綴,默認是('x','y')

merge連接pd.merge(left,right,on='key')默認等值連接,左邊和右邊的key都有,才會出現(xiàn)在結果里merge連接pd.merge(left,right,on=['key1','key2'])#多個關鍵字等值連接,默認how=‘inner’merge連接pd.merge(left,right,how='left',on=['key1','key2'])#左邊的都會出現(xiàn)在結果里,右邊的如果無法匹配則為Nullmerge連接pd.merge(left,right,how='right',on=['key1','key2'])右邊的都會出現(xiàn)在結果里,左邊的如果無法匹配則為Nullmerge連接pd.merge(left,right,how='outer',on=['key1','key2'])#左邊、右邊的都會出現(xiàn)在結果里,如果無法匹配則為Nulljoin連接默認行索引匹配連接,

merge()默認是列索引匹配連接。用法:join()方法能夠通過索引或指定列來連接多個DataFrame對象,它默認以index作為對齊的列。join()和merge()一樣,是橫向拼接,只能進行數(shù)據(jù)匹配,即添加列,不能添加行,并且支持how的四種模式:inner,left,right,outer。其實join()就是merge()的一種封裝,后臺調(diào)用的正是merge()。只是為了調(diào)用更為簡單,才有了join()。語法:join(other,on=None,how='left',lsuffix='',rsuffix='',sort=False)

how:和merge中的how參數(shù)一樣,用來指定表合并保留數(shù)據(jù)的規(guī)則,匹配到的內(nèi)容不存在,則用NaN填充。

on:在實際應用中如果右表的索引值正是左表的某一列的值,這時可以通過將右表的索引和左表的列對齊合并這樣靈活的方式進行合并。

sort:根據(jù)連接鍵對合并的數(shù)據(jù)進行排序,默認為False。理解leftjoin、rightjoin、innerjoin、outerjoin的區(qū)別join連接Joiningonindex(默認是基于索引連接的)常先設置兩表的index列。left.join(right,how='inner')#等價pd.merge(left,right,left_index=True,right_index=True,how='inner')join連接Joiningleftkeycolumnsonanrightindex(左邊列與右邊索引連接)left.join(right,on='key')#left的key列和right的行索引連接,key必須是左邊列#等價pd.merge(left,right,left_on='key',right_index=True,how='left',sort=False)join連接如何實現(xiàn)兩個df的列連接呢?兩種方法列連接,需要把兩個df列轉換成行索引df.set_index('key').join(other.set_index('key'))列連接,需要把other的列轉換成行索引,key必須是df的列df.join(other.set_index('key'),on='key',how='inner')combine_firstbine_first(df2)填充空值規(guī)則是與null值的元素在同一位置等,同一位置指行列索引值一致。通過在df1中使用df2的非null值填充空值來組合兩個DataFrame對象,函數(shù)返回的DataFrame的行索引和列索引將是兩者的并集。如果df1中數(shù)據(jù)非空,則結果保留df1中的數(shù)據(jù),如果df1中的數(shù)據(jù)為空值且傳入combine_first()方法的df2中數(shù)據(jù)非空,則結果取df2中的數(shù)據(jù),如果df1和df2中的數(shù)據(jù)都為空值,則結果保留df1中的空值。combine_firstcombine填充合并bine(df2,func,fill_value,

overwrite=True):df1基于傳遞的函數(shù)執(zhí)行與df2的逐列組合。使用func將df1與df2組合到按元素組合的列。生成的DataFrame的行索引和列索引將是兩者的并集。func函數(shù)的入?yún)⑹莾蓚€Series,分別來自兩個DataFrame(將DataFrame按列遍歷),返回結果是一個合并之后的Series,在函數(shù)中實現(xiàn)合并的規(guī)則。combine填充合并fill_value:在將列傳遞給合并函數(shù)之前,先用fill_value填充df1、df2中所有列的值,再按傳入的函數(shù)進行合并操作。overwrite=False,不處理缺少的列,缺少指df1中有而df2中沒有該列,df1中A列原樣返回小結df1.concat(df2):機械地行或列堆疊數(shù)據(jù)。df1.append(df2):只有按行合并,沒有按列合并,相當于concat按行的簡寫形式。df1.merge(df2):適合處理列的連接。df1.join(df2):適合處理行索引的連接。df.set_index()、df.reset_index()、df.T可以進行df行列的轉換,因此merge和join方法其實用一種就可以了

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論