版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課題3.7數(shù)據(jù)的拼接和合并課型講練授課班級(jí)大數(shù)據(jù)授課時(shí)數(shù)2教學(xué)目標(biāo)1.理解縱向拼接和橫向合并的意義。2.能夠?qū)⒍鄠€(gè)數(shù)據(jù)進(jìn)行縱向拼接。3.能夠?qū)⒍鄠€(gè)數(shù)據(jù)進(jìn)行橫向合并。4.理解橫向合并中內(nèi)連接、外連接、左連接、右連接的作用。教學(xué)重點(diǎn)1.能夠?qū)⒍鄠€(gè)數(shù)據(jù)進(jìn)行縱向拼接。2.能夠?qū)⒍鄠€(gè)數(shù)據(jù)進(jìn)行橫向合并。教學(xué)難點(diǎn)1.理解橫向合并中內(nèi)連接、外連接、左連接、右連接的作用。學(xué)情分析數(shù)據(jù)的連接在數(shù)據(jù)庫(kù)SQL中已經(jīng)學(xué)過(guò),這一點(diǎn)有助于pandas的數(shù)據(jù)合并的內(nèi)容的學(xué)習(xí)。在數(shù)據(jù)導(dǎo)入時(shí),往往會(huì)遇到數(shù)據(jù)的合成。比如某店鋪想了解某月的銷(xiāo)售額,就需要將這個(gè)月第1天、第2天、…,直到最后一天的日銷(xiāo)售報(bào)表合成一個(gè)月銷(xiāo)售報(bào)表,以了解商鋪的運(yùn)營(yíng)情況。數(shù)據(jù)的合成是一種將來(lái)自不同源的數(shù)據(jù)組合成一個(gè)報(bào)表的有效方法常用的方法。如果將兩個(gè)或多個(gè)列名完全相同的DataFrame數(shù)據(jù)連接起來(lái),從方向上看是數(shù)據(jù)的縱向拼接。如果根據(jù)某一列將不同的兩個(gè)DataFrame數(shù)據(jù)合并在一起,從方向上看是數(shù)據(jù)的橫向合并。縱向拼接和橫向合并都有各自的特點(diǎn),使用時(shí)需要注意數(shù)據(jù)合成的方向。一、數(shù)據(jù)的縱向拼接數(shù)據(jù)的縱向拼接將兩個(gè)或多個(gè)DataFrame同列拼接,在拼接時(shí),要保證不同的DataFrame列名必須全部相同,否則就會(huì)出現(xiàn)多個(gè)空值??v向拼接可以使用append函數(shù),append的一般用法為:DataFrame.append(other,ignore_index) 其中,other表示添加的數(shù)據(jù)。ignore_index表示是否忽略原來(lái)索引并重新構(gòu)建索引。append函數(shù)可以將數(shù)據(jù)向下拓展,在數(shù)據(jù)拼接時(shí),如果僅僅將默認(rèn)的索引按照原始的行號(hào)連接起來(lái),比如表1默認(rèn)索引是0、1、2、…,表2默認(rèn)索引是0、1、2、…,連接后的索引就是0、1、2、…、0、1、2、…,這顯然不方便數(shù)據(jù)的調(diào)用。ignore_index=True表示忽略原來(lái)索引重新構(gòu)建索引,即表2的索引會(huì)在表1的索引的基礎(chǔ)自動(dòng)向下編號(hào),使得兩個(gè)表的索引變?yōu)橐粋€(gè)完整的索引,便于數(shù)據(jù)選取。ignore_index=False表示沿用原來(lái)索引,而且這是默認(rèn)設(shè)置。示例代碼如下:importnumpyasnpimportpandasaspdarr1=np.arange(1,10).reshape(3,3)data_1=pd.DataFrame(arr1,columns=['a','b','c'])arr2=np.arange(10,16).reshape(2,3)data_2=pd.DataFrame(arr2,columns=['a','b','e'])print("初始數(shù)據(jù)為:\n",data_1)print("初始拼接數(shù)據(jù)為:\n",data_2)data_append1=data_1.append(data_2,ignore_index=False)data_append2=data_1.append(data_2,ignore_index=True)print("沿用原來(lái)索引的結(jié)果為:\n",data_append1)print("重新構(gòu)建索引的結(jié)果為:\n",data_append2)圖3-*數(shù)據(jù)的縱向拼接示例結(jié)果 【結(jié)果分析】從結(jié)果中可以看到,在數(shù)據(jù)拼接時(shí),如果參數(shù)ignore_index等于False,data_2的索引還是原來(lái)的0和1,如果參數(shù)ignore_index等于True,data_2的索引就在data_1索引的基礎(chǔ)上自動(dòng)變?yōu)樾滤饕?和4。二、數(shù)據(jù)的橫向合并 merge函數(shù)可以將兩個(gè)表格(DataFrame)進(jìn)行橫向合并,通過(guò)merge函數(shù)可以將兩個(gè)Dataframe根據(jù)一些共有的列(合并字段或主鍵)合并起來(lái),比如編號(hào)“ID”。橫向合并時(shí)可以選擇不同的合并方式,可以選擇inner(默認(rèn))、outer、left、right這幾種模式,分別對(duì)應(yīng)是內(nèi)連接、外連接,左連接,右連接。merge函數(shù)的一般用法為:pandas.merge(left_Dataframe,right_Dataframe,how,on,sort)其中,各個(gè)參數(shù)的作用如下:left_Dataframe表示參與合并的左側(cè)DataFrame。right_Dataframe表示參與合并的右側(cè)DataFrame。how表示合并方式,取值包括'inner'、'outer'、'left'、'right',默認(rèn)為'inner'。'inner'表示內(nèi)連接,即兩個(gè)表將根據(jù)合并字段(主鍵)的重復(fù)取值進(jìn)行合并,類(lèi)似于交集。'outer'表示外連接,即兩個(gè)表將根據(jù)合并字段(主鍵)的所有取值進(jìn)行合并,類(lèi)似于并集。'left'表示左連接,即兩個(gè)表將根據(jù)左表合并字段(主鍵)的取值進(jìn)行合并。'right'表示右連接,即兩個(gè)表將根據(jù)右表合并字段(主鍵)的取值進(jìn)行合并。如果在數(shù)據(jù)合并時(shí),除了用于合并的主鍵以外,還出現(xiàn)了其他重復(fù)的列,最后的結(jié)果中,會(huì)以“列名_x”和“列名_y”的方式出現(xiàn)。on表示用于連接的列名,未指定則使用兩列的交集作為連接鍵。sort表示合并以后數(shù)據(jù)排序,True表示升序,F(xiàn)alse表示降序。示例代碼如下:arr1=np.arange(1,10).reshape(3,3)data_left=pd.DataFrame(arr1,columns=['a','b','c'])data_left['key']=['001','002','003']arr2=np.arange(10,19).reshape(3,3)data_right=pd.DataFrame(arr2,columns=['a','d','e'])data_right['key']=['001','002','004']print("初始左表數(shù)據(jù)為:\n",data_left)print("初始右表數(shù)據(jù)為:\n",data_right)data_merge1=pd.merge(data_left,data_right,how='inner',on='key')print("按內(nèi)連接方式的合并結(jié)果為:\n",data_merge1)data_merge2=pd.merge(data_left,data_right,how='outer',on='key')print("按外連接方式的合并結(jié)果為:\n",data_merge2)輸出結(jié)果如圖3-*所示。圖3-*內(nèi)連接和外連接示例結(jié)果【結(jié)果分析】從結(jié)果可以看到,采用內(nèi)連接的連接方式時(shí),根據(jù)兩表“key”列中相同的2條數(shù)據(jù)(001和002)進(jìn)行了合并。采用外連接的連接方式時(shí),根據(jù)兩表“key”列中所有4條數(shù)據(jù)(001、002、003和004)進(jìn)行了合并。示例代碼如下:data_merge3=pd.merge(data_left,data_right,how='left',on='key')print("按左連接方式的合并結(jié)果為:\n",data_merge3)data_merge4=pd.merge(data_left,data_right,how='right',on='key')print("按右連接方式的合并結(jié)果為:\n",data_merge4)圖3-*左連接和右連接示例結(jié)果【結(jié)果分析】從結(jié)果可以看到,采用左連接的連接方式時(shí),根據(jù)左表“key”列中3條數(shù)據(jù)(001、002和003)進(jìn)行了合并。采用右連接的連接方式時(shí),根據(jù)右表“key”列中3條數(shù)據(jù)(001、002和004)進(jìn)行了合并。任務(wù)實(shí)訓(xùn)任務(wù)1:利用循環(huán)語(yǔ)句,依次導(dǎo)入supermarket.xlsx(supermarket.xlsx存放在c:\data路徑中)中前4張工作表“1月1日”、“1月2日”、“1月3日”、“1月4日”,數(shù)據(jù)如圖3-*所示。利用append函數(shù)依次拼接,拼接時(shí),忽略原來(lái)數(shù)據(jù)的索引,結(jié)果存放在data1_append。圖3-*任務(wù)1初始數(shù)據(jù)具體代碼如下:pd.set_option('display.max_columns',None)pd.set_option('display.width',None)pd.set_option('display.unicode.east_asian_width',True)data1=pd.read_excel('c:\data\supermarket.xlsx',sheet_name=0)foriinrange(1,4):data1_append=pd.read_excel('c:\data\supermarket.xlsx',sheet_name=i)data1=data1.append(data1_append,ignore_index=True)print("拼接后1月數(shù)據(jù)data1為:\n",data1)輸出結(jié)果如圖3-*所示。圖3-*任務(wù)1輸出結(jié)果任務(wù)2:任務(wù)1的數(shù)據(jù)拼接結(jié)果data1是1月的部分銷(xiāo)售記錄,而supermarket.xlsx中第5張工作表“1月打折”記錄1月部分訂單的打折數(shù)據(jù),下面data1將作為左表數(shù)據(jù),將工作表“1月打折”作為右表數(shù)據(jù),將“訂單ID”作為合并的連接鍵,按照內(nèi)連接的方式將兩表進(jìn)行連接,合并結(jié)果存放在data2,并輸出data2的前5行中,折扣金額大于5000的“客戶(hù)姓名”、“銷(xiāo)售金額”、“打折金額”。具體代碼如下:data_left=data1data_right=pd.read_excel('c:\data\supermarket.xlsx',sheet_name="1月打折")data2=pd.merge(data_left,data_right,how='inner',on='訂單ID')print("數(shù)據(jù)合并結(jié)果為:\n",data2)result=
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑項(xiàng)目竣工匯報(bào)方案
- 防腐蝕工程費(fèi)用管控方案
- 水利工程環(huán)保措施落實(shí)方案
- 工地物料使用流程標(biāo)準(zhǔn)化方案
- 江鈴馭勝培訓(xùn)
- 機(jī)械化土石方作業(yè)技術(shù)方案
- 工地物料存放安全規(guī)范方案
- 水利工程施工風(fēng)險(xiǎn)評(píng)估方案
- 消防設(shè)施運(yùn)行維護(hù)手冊(cè)編制方案
- 2026年體育理論基礎(chǔ)知識(shí)與運(yùn)動(dòng)技能測(cè)試題
- 2025年江西省高職單招文化統(tǒng)一考試真題及答案
- 2026天津津南國(guó)有資本投資運(yùn)營(yíng)集團(tuán)有限公司及實(shí)控子公司招聘工作人員招聘11人備考題庫(kù)附參考答案詳解(能力提升)
- 風(fēng)的成因探秘與降水形成:基于模型的科學(xué)探究-八年級(jí)科學(xué)教學(xué)設(shè)計(jì)
- 醫(yī)院危險(xiǎn)品管理培訓(xùn)制度
- 酒店宴會(huì)銷(xiāo)售部培訓(xùn)課件
- 2025年上海事業(yè)編考試歷年真題及答案
- 低壓送電制度規(guī)范
- (正式版)DB51∕T 3336-2025 《零散天然氣橇裝回收安全規(guī)范》
- 湖南省長(zhǎng)沙市雅禮書(shū)院中學(xué)2026屆高三上數(shù)學(xué)期末檢測(cè)試題含解析
- 駕照科目一記憶口訣匯編
- 2026五個(gè)帶頭發(fā)言材料
評(píng)論
0/150
提交評(píng)論