版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
Pandas-連接你我互通有無課前回顧描述性統(tǒng)計分析:sum、count、mean、min、max、descibe、pct_change···累計統(tǒng)計:cumsum、cumprod、cummax、cummin數(shù)據(jù)排序:sort_values、sort_index數(shù)據(jù)合并分析數(shù)據(jù)往往來源于不同渠道,在進行數(shù)據(jù)分析時經(jīng)常需要融合多方信息,比如分析財務指標時通常涉及資產(chǎn)負債表和利潤表數(shù)據(jù),那么,在Pandas中,如何將多個表格的數(shù)據(jù)合并或者連接在一起呢?pandas提供了多種連接、合并的方法,包括merge()函數(shù)、concat()函數(shù)、join()函數(shù)、append()函數(shù),這些函數(shù)均適用于不同DataFrame的合并,但適用的場景有所不同。目錄01020304merge()函數(shù)concat()函數(shù)join()函數(shù)append()函數(shù)01merge()函數(shù)
數(shù)據(jù)連接-mergemerge()函數(shù):具有表連接功能,類似于Excel中的vlookup函數(shù),可以根據(jù)一個或多個鍵(列值)將不同DataFrame連接起來。merge()函數(shù)應用場景:兩個DataFrame存在相同的鍵,根據(jù)鍵整合到一張表里面。merge()函數(shù)語法:pandas.merge(left,
right,
how='inner',
on=None,
left_on=None,
right_on=None,
left_index=False,
right_index=False,
sort=False,
suffixes=('_x','_y'),
copy=True,
indicator=False,
validate=None)提示merge()里并沒有axis參數(shù),只能進行橫向連接(列連接);DataFrame可直接調(diào)用merge(),調(diào)用merge的Dataframe是“左表”,而作為形參的是DataFrame是“右表”。merge()參數(shù)參數(shù)說明left、right兩個不同的DataFramehow連接方式,有inner、outer、left、right,默認為inner內(nèi)連接on用于連接的列索引名稱,左右兩個DataFrame中必須同時存在,如果沒有指定且left_index和right_index為False,則以兩個DataFrame列名交集作為連接鍵left_on左側DataFrame中用于連接鍵的列名,該參數(shù)在左右列名不同但代表的含義相同時非常有用right_on右側DataFrame中用于連接鍵的列名left_index默認False,設置為True代表使用左側DataFrame中的行索引作為連接鍵right_index默認False,設置為True代表使用右側DataFrame中的行索引作為連接鍵sort默認為False,是否將合并的數(shù)據(jù)進行排序,設置為False可以提高性能suffixes字符串值組成的元組,兩個表存在除主鍵之外的相同列名時,在列名后面附加的后綴名稱用以區(qū)分數(shù)據(jù)來源于哪個表,默認為('_x','_y')copy默認為True,設置為False,可以在某些特殊情況下避免將數(shù)據(jù)復制到結果數(shù)據(jù)結構中。indicator默認為False,是否顯示每行數(shù)據(jù)的來源validate自動檢查其合并鍵中是否有意外的重復項數(shù)據(jù)連接-merge要求:使用merge()函數(shù)將data.xlsx中的資產(chǎn)負債表項目和利潤表項目連接在一起。示例1代碼importpandasaspd#讀取資產(chǎn)負債表項目df1=pd.read_excel('/webpython/course/d2633ec9ca5c4a288b73f97b4616d541/data.xlsx',converters={'年':str,'月':str})#讀取利潤表項目df2=pd.read_excel('/webpython/course/d2633ec9ca5c4a288b73f97b4616d541/data.xlsx',sheet_name=1,converters={'年':str,'月':str})#調(diào)用merge函數(shù)連接df1、df2df3=pd.merge(df1,df2)show_table(df3.head())數(shù)據(jù)連接-merge要求:使用merge()函數(shù)將data.xlsx中的資產(chǎn)負債表項目和利潤表連接在一起。表的連接方式merge()表連接方式有inner、left、right、outer,默認inner,空值用NaN填充inner:內(nèi)連接,取交集outer:外連接,取并集left:左連接,左側取全部,右側取部分right:右連接,右側取全部,左側取部分?表的連接方式innerouter表的連接方式leftright02concat()函數(shù)
數(shù)據(jù)合并-concatconcat()函數(shù):沿特定軸連接兩個或兩個以上的DataFrame,既可實現(xiàn)縱向合并也可實現(xiàn)橫向合并,行列索引均可重復。concat()函數(shù)適用場景:兩個或多個DataFrame進行橫向(列拼接)或縱向合并(行拼接)concat()函數(shù)語法:pandas.concat(objs,axis=0,join='outer',ignore_index=False,keys=None,levels=None,names=None,verify_integrity=False,sort=None,copy=True)concat()常用參數(shù)參數(shù)說明objs連接對象axis軸向,0代表縱向合并(行拼接),1代表橫向合并(列拼接),默認是0join連接方式,有inner(交集)、outer(并集),默認為'outer'ignore_index是否重建索引,默認Falsekeys傳遞鍵作為最外層級來構建層次結構索引,默認Nonelevels生成層次索引的級別,默認Nonenames生成層次索引的名稱,默認Noneverify_integrity檢測新的串聯(lián)軸是否包含重復項,默認為Falsesort將合并的數(shù)據(jù)進行排序,設置為False可以提高性能,默認為Truecopy是否復制,默認為True縱向連接要求:使用concat()函數(shù)將data.xlsx中的資產(chǎn)負債表項目和利潤表項目進行縱向合并。示例2代碼#concat函數(shù)縱向合并df4=pd.concat([df1,df2])#展示df4行索引21及以后的行show_table(df4[21:])提示默認axis=0,縱向合并(行拼接),拼接后的表格:index=index(df1)+index(df2)→直接累加columns=columns(df1)∪columns(df2)→累加去重橫向連接要求:使用concat()函數(shù)將data.xlsx中的資產(chǎn)負債表項目和利潤表項目進行橫向合并。示例3代碼#concat函數(shù)橫向合并df5=pd.concat([df1,df2],axis=1)#使用show_table()展示df5前5行show_table(df5.head())提示axis=1,橫向合并(列拼接),拼接后的表格:columns=columns(df1)+columns(df2)→直接累加index=index(df1)∪index(df2)→累加去重03join()函數(shù)join()函數(shù)join()函數(shù):連接另一個DataFrame的列(橫向連接),與merge()函數(shù)功能類似,區(qū)別在于兩者適用的場景有所不同。join()函數(shù)語法:DataFrame.join(other,on=None,how='left',lsuffix='',rsuffix='',sort=False)join()函數(shù)適用場景:無重復列名的兩個DataFrame基于行索引進行列拼接。join()函數(shù)常用參數(shù)參數(shù)說明other連接的DataFrameon指定左表中用于連接的列名,右邊必須有相同的列(需設置為索引)how連接方式,有inner、outer、left、right,默認為left左連接lsuffix兩表列名重復時,左表的使用的后綴rsuffix兩表列名重復時,右表的使用的后綴sort默認為True,將合并的數(shù)據(jù)進行排序,設置為False可以提高性能join()函數(shù)代碼importpandasaspd#左表df_l=pd.DataFrame({'資產(chǎn)':[1000,1200],'負債':[200,300]})show_table(df_l)代碼#右表df_r=pd.DataFrame({'收入':[1000,1200],'成本':[200,400]})show_table(df_r)代碼#join連接無重復列名的DataFrameshow_table(df_l.join(df_r))join()函數(shù)要求:使用join()函數(shù)將data.xlsx中的資產(chǎn)負債表項目和利潤表項目進行橫向合并。示例4代碼#join()函數(shù)橫向連接,必須將右表相同列名設置為索引,與merge()函數(shù)結果一致df6=df1.join(df2.set_index(['年','月']),on=['年','月'])show_table(df6.head())04append()函數(shù)append()函數(shù)append()函數(shù):向DataFrame對象中添加新的行(縱向合并),如果添加的列名不在DataFrame對象中,將會被當作新的列進行添加。append()函數(shù)語法:DataFrame.append(other,ignore_index=False,verify_integrity=False,sort=False)append()函數(shù)適用場景:兩個DataFrame縱向連接,是concat(axis=0)的簡略形式。append()函數(shù)常用參數(shù)參數(shù)說明other需要追加的DataFrameignore_index是否重建索引,默認為Falseverify_integrity具有重復項的索引是否拋出異常,默認為Falsesort默認為True,將合并的數(shù)據(jù)進行排序append()函數(shù)要求:使用append()函數(shù)將data.xlsx中的資產(chǎn)負債表項目和利潤表項目進行縱向合并。示例5代碼#append函數(shù)縱向合并df7=df1.append(df2)show_table(df7[21:])
#使用show_table()展示d
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)村土地承包經(jīng)營權流轉與農(nóng)業(yè)科技創(chuàng)新與應用合同
- 二零二五年度文化旅游合作協(xié)議樣本3篇
- 2025年度農(nóng)業(yè)農(nóng)機安全監(jiān)管與服務合同3篇
- 2025年度能源企業(yè)運維檢修派遣服務合同模版3篇
- 二零二五年度高空作業(yè)安全事故處理與保障協(xié)議3篇
- 2025年度農(nóng)機購置與農(nóng)業(yè)廢棄物資源化利用合同3篇
- 2025編號建設工程設計合同
- 二零二五年度公積金租房管理服務協(xié)議范本3篇
- 2025年度兼職協(xié)議書-電子商務平臺運營助手服務合同3篇
- 二零二五年度農(nóng)村山塘承包合同(水資源保護與農(nóng)業(yè)現(xiàn)代化)3篇
- 【合同范本】補充協(xié)議-面積差補款-預售版
- 鐵路工程-軌道工程施工工藝及方案
- 福建省福州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細及行政區(qū)劃代碼
- 《高中語文文言斷句》一等獎優(yōu)秀課件
- 上海市中小學生學籍信息管理系統(tǒng)
- (完整版)自動感應門施工方案
- [QC成果]提高剪力墻施工質量一次合格率
- 8站小車呼叫的plc控制
- _ 基本粒子與宏觀物體內(nèi)在聯(lián)系
- 象棋比賽積分編排表
- 小學贛美版六年級美術上冊第二十課向往和平課件(16張)ppt課件
評論
0/150
提交評論