Python數(shù)據(jù)分析與可視化(第2版) 課件3.4 數(shù)據(jù)的篩選與切片_第1頁
Python數(shù)據(jù)分析與可視化(第2版) 課件3.4 數(shù)據(jù)的篩選與切片_第2頁
Python數(shù)據(jù)分析與可視化(第2版) 課件3.4 數(shù)據(jù)的篩選與切片_第3頁
Python數(shù)據(jù)分析與可視化(第2版) 課件3.4 數(shù)據(jù)的篩選與切片_第4頁
Python數(shù)據(jù)分析與可視化(第2版) 課件3.4 數(shù)據(jù)的篩選與切片_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第3章利用pandas進(jìn)行數(shù)據(jù)預(yù)處理3.4數(shù)據(jù)的篩選與切片在對數(shù)據(jù)做相應(yīng)操作之前,應(yīng)先篩選出所需的數(shù)據(jù),pandas里最常用的結(jié)構(gòu)DataFrame就是一個(gè)二維表,行和列的設(shè)計(jì)很便于數(shù)據(jù)的選取。DataFrame的索引有兩種,行索引用index來表示,列索引用columns表示,而在選取行數(shù)據(jù)、列數(shù)據(jù)或是切片DataFrame數(shù)據(jù)時(shí),都會(huì)使用這兩個(gè)索引。通過用二維嵌套字典可以創(chuàng)建DataFrame,并且將列數(shù)據(jù)看成是外層字典,而將行數(shù)據(jù)看成是內(nèi)層字典。按照字典的訪問方式就可以訪問DataFrame的數(shù)據(jù),如果是輸入字典的關(guān)鍵字,默認(rèn)返回的就是外層字典的數(shù)據(jù)。一、直接選取列數(shù)據(jù)在DataFrame后面直接跟關(guān)鍵字,默認(rèn)就返回該關(guān)鍵字對應(yīng)列數(shù)據(jù)。利用字典方式選取列數(shù)據(jù)有兩種,一種時(shí)選取單列,另一種時(shí)選取多列。一、直接選取列數(shù)據(jù)1.選取單列在DataFrame中,每一列數(shù)據(jù)的查詢可以通過列名讀取來實(shí)現(xiàn),選取單列的一般格式為:DataFrame[column]其中,column表示單列的名稱。一、直接選取列數(shù)據(jù)2.選取多列在DataFrame中,訪問多列數(shù)據(jù)需要將多個(gè)列名columns放入一個(gè)列表[]中,選取多列的一般格式為:DataFrame[[columns]]其中,columns表示多列的名稱。一、直接選取列數(shù)據(jù)2.選取多列一、直接選取列數(shù)據(jù)示例代碼如下:importnumpyasnpimportpandasaspddata=pd.DataFrame(np.arange(1,10).reshape(3,3),columns=['a','b','c'],index=['001','002','003'])print("初始數(shù)據(jù)為:\n",data)print("選取b列的列數(shù)據(jù)為:\n",data['b'])print("選取a列和c列的列數(shù)據(jù)為:\n",data[['a','c']])2.選取多列一、直接選取列數(shù)據(jù)1.利用行索引選取數(shù)據(jù)在DataFrame中,如果選取行數(shù)據(jù),不能直接用行索引進(jìn)行選取,而是需要使用loc函數(shù)進(jìn)行選取,loc函數(shù)的一般用法是:DataFrame.loc[Auto_index]或DataFrame.loc[set_index]其中,Auto_index表示自動(dòng)生成的行索引,set_index表示用戶設(shè)置的行索引。二、利用loc函數(shù)選取行數(shù)據(jù)1.利用行索引選取數(shù)據(jù)①利用自動(dòng)生成的行索引選取數(shù)據(jù)利用自動(dòng)生成的行索引選取數(shù)據(jù)的一般用法為:DataFrame.loc[Auto_index]其中,Auto_index可以是單個(gè)索引,也可以是多個(gè)不連續(xù)或連續(xù)的索引。選取多個(gè)不連續(xù)索引時(shí),需要將這些索引放入一個(gè)列表[]中。選取多個(gè)連續(xù)索引時(shí),可以用冒號“:”連接起始索引和終止索引,并且起始索引和終止索引都是可以取到的。二、利用loc函數(shù)選取行數(shù)據(jù)1.利用行索引選取數(shù)據(jù)①利用自動(dòng)生成的行索引選取數(shù)據(jù)二、利用loc函數(shù)選取行數(shù)據(jù)示例代碼如下:print("初始數(shù)據(jù)為:\n",data)print("選取自動(dòng)行索引為002的行數(shù)據(jù)為:\n",data.loc['002'])print("選取自動(dòng)行索引為001和003的行數(shù)據(jù)為:\n",data.loc[['001','003']])print("選取自動(dòng)行索引為001到003的行數(shù)據(jù)為:\n",data.loc['001':'003'])1.利用行索引選取數(shù)據(jù)①利用自動(dòng)生成的行索引選取數(shù)據(jù)二、利用loc函數(shù)選取行數(shù)據(jù)1.利用行索引選取數(shù)據(jù)②利用生成的索引選取數(shù)據(jù)除了利用自動(dòng)生成索引選取數(shù)據(jù)以外,還可以利用用戶生成的索引選取數(shù)據(jù),其一般用法為:DataFrame.loc[set_index]其中,set_index表示用戶設(shè)置的行索引。二、利用loc函數(shù)選取行數(shù)據(jù)1.利用行索引選取數(shù)據(jù)②利用生成的索引選取數(shù)據(jù)二、利用loc函數(shù)選取行數(shù)據(jù)示例代碼如下:data['d']=['2020-1-1','2020-1-2','2020-1-3']data=data.set_index('d') #利用set_index將d列設(shè)置為行索引print("增加d列并重設(shè)索引的數(shù)據(jù)為:\n",data)print("選取行索引為2020-1-2的行數(shù)據(jù)為:\n",data.loc['2020-1-2'])print("選取行索引為2020-1-1和2020-1-3的行數(shù)據(jù)為:\n",data.loc[['2020-1-1','2020-1-3']])1.利用行索引選取數(shù)據(jù)②利用生成的索引選取數(shù)據(jù)二、利用loc函數(shù)選取行數(shù)據(jù)2.利用行篩選條件選取數(shù)據(jù)在DataFrame中,除了可以利用行索引選取行數(shù)據(jù)以外,還可以利用loc函數(shù)設(shè)置篩選條件選取行數(shù)據(jù),比如篩選性別為“男”的行數(shù)據(jù),或是地區(qū)為“蘇州”的行數(shù)據(jù)等。二、利用loc函數(shù)選取行數(shù)據(jù)2.利用行篩選條件選取數(shù)據(jù)利用loc函數(shù)設(shè)置行篩選條件選取行數(shù)據(jù)的一般方法為:DataFrame.loc[行篩選條件]其中,如果存在多個(gè)行篩選條件,可以使用“&”等連接符進(jìn)行連接,而且將每個(gè)行篩選條件都寫在括號()內(nèi)。二、利用loc函數(shù)選取行數(shù)據(jù)2.利用行篩選條件選取數(shù)據(jù)二、利用loc函數(shù)選取行數(shù)據(jù)示例代碼如下:data=data.reset_index()#利用reset_index將設(shè)置的索引還原成自動(dòng)行索引print("還原成自動(dòng)行索引后的數(shù)據(jù)為:\n",data)print("d列的值為2020-1-1的結(jié)果為:\n",data.loc[data['d']=='2020-1-1'])2.利用行篩選條件選取數(shù)據(jù)二、利用loc函數(shù)選取行數(shù)據(jù)在DataFrame中,除了可以單獨(dú)選列數(shù)據(jù)或行數(shù)據(jù)以外,還可以選取多列多行的數(shù)據(jù),即DataFrame切片數(shù)據(jù),DataFrame切片數(shù)據(jù)可以通過多種方式進(jìn)行實(shí)現(xiàn),既可以通過類似于二維字典數(shù)據(jù)選取的方法,即雙重索引的方法,也可以通過loc函數(shù)或iloc函數(shù)。三、選取DataFrame切片數(shù)據(jù)1.使用雙重索引直接選取數(shù)據(jù)利用雙重索引(先列后行)選取DataFrame切片數(shù)據(jù)的原理是通過DataFrame[[columns]]選出需要的多列,再通過[index]選出需要的行,其一般方法為:DataFrame[[columns]][index]三、選取DataFrame切片數(shù)據(jù)1.使用雙重索引直接選取數(shù)據(jù)三、選取DataFrame切片數(shù)據(jù)示例代碼如下:data=pd.DataFrame(np.arange(1,17).reshape(4,4),

columns=['a','b','c','d'],

index=['001','002','003','004'])print("初始數(shù)據(jù)為:\n",data)print("行索引為001列003,a列與c列的結(jié)果為:\n",data[['a','c']]['001':'003'])1.使用雙重索引直接選取數(shù)據(jù)三、選取DataFrame切片數(shù)據(jù)2.使用loc函數(shù)選取數(shù)據(jù)loc函數(shù)不但可以單獨(dú)選取行數(shù)據(jù),而且還可以選取DataFrame切片數(shù)據(jù)(先行后列),其一般方法為:DataFrame.loc[index,[columns]]或DataFrame.loc[行篩選條件,[columns]]三、選取DataFrame切片數(shù)據(jù)其中,index可以是單個(gè)索引,也可以是多個(gè)不連續(xù)或連續(xù)的索引。選取多個(gè)不連續(xù)索引時(shí),需要將這些索引放入一個(gè)列表[]中。選取多個(gè)連續(xù)索引時(shí),可以用冒號“:”連接起始始索引和終止索引,并且起始索引和終止索引都是可以取到的。如果columns是多列,需要將多個(gè)列名要放入一個(gè)列表[]中。三、選取DataFrame切片數(shù)據(jù)2.使用loc函數(shù)選取數(shù)據(jù)三、選取DataFrame切片數(shù)據(jù)示例代碼如下:print("初始數(shù)據(jù)為:\n",data)print("行索引為001列003,a列與c列的結(jié)果為:\n",data.loc['001':'003',['a','c']])print("行索引為001與003,a列與c列的結(jié)果為:\n",data.loc[['001','003'],['a','c']])print("滿足a列的值大于3的行數(shù)據(jù)中,再選擇a列、b列、c列的結(jié)果為:\n",data.loc[data['a']>3,['a','b','c']])2.使用loc函數(shù)選取數(shù)據(jù)三、選取DataFrame切片數(shù)據(jù)3.使用iloc函數(shù)選取數(shù)據(jù)iloc函數(shù)是按照行(index)與列(column)的位置來進(jìn)行選取數(shù)據(jù),iloc不管行與列的具體值是多少,只和位置有關(guān)。iloc函數(shù)的一般用法為:iloc[index_num,columns_num]三、選取DataFrame切片數(shù)據(jù)iloc[index_num,columns_num]其中,index_num和columns_num只能使用數(shù)值,對應(yīng)的行索引和列索引的編號,而要注意行索引和列索引都是從0開始編號。index_num和columns_num可以只有一個(gè)數(shù)字,也可以是一個(gè)范圍,并且范圍都是左閉右開區(qū)間,即右端點(diǎn)索引對應(yīng)的行或列是不能取到的,這一點(diǎn)loc函數(shù)是有所不同的。三、選取DataFrame切片數(shù)據(jù)3.使用iloc函數(shù)選取數(shù)據(jù)三、選取DataFrame切片數(shù)據(jù)示例代碼如下:print("初始數(shù)據(jù)為:\n",data)print("行索引編號1到3,列索引編號0到2的數(shù)據(jù)為:\n",data.iloc[1:4,0:3])3.使用iloc函數(shù)選取數(shù)據(jù)三、選取DataFrame切片數(shù)據(jù)任務(wù)實(shí)訓(xùn)3-10:利用read_excel導(dǎo)入supermarket.xlsx(supermarket.xlsx存放在c:\data路徑中)中的“銷售統(tǒng)計(jì)”工作表(第1張工作表),并將“客戶ID”設(shè)為索引列,將導(dǎo)入數(shù)據(jù)的前3行命名為data1,并完成:(1)選取“產(chǎn)品名稱”列的數(shù)據(jù)。(2)選取“訂單日期”、“發(fā)貨日期”兩列的數(shù)據(jù)。(3)選取“客戶編號”為“10165”的行數(shù)據(jù)。(4)選取“城市”為“內(nèi)江”并且“銷售金額”大于100數(shù)據(jù)。任務(wù)實(shí)訓(xùn)3-10(1)具體代碼如下: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',

index_col='客戶ID').head(3)print("導(dǎo)入的數(shù)據(jù)為:\n",data1)print("選取'產(chǎn)品名稱'列的數(shù)據(jù)為:\n",data1['產(chǎn)品名稱'])任務(wù)實(shí)訓(xùn)3-10(1)任務(wù)實(shí)訓(xùn)3-10(2)具體代碼如下:print("選取'訂單日期'列和'發(fā)貨日期'的數(shù)據(jù)為:\n",data1[['訂單日期',

'發(fā)貨日期']])任務(wù)實(shí)訓(xùn)3-10(2)任務(wù)實(shí)訓(xùn)3-10(3)示例代碼如下:print("選取'客戶ID'為10165的行數(shù)據(jù)為:\n",data1.loc[10165])任務(wù)實(shí)訓(xùn)3-10(3)任務(wù)實(shí)訓(xùn)1(4)具體代碼如下:print("選取'城市'為內(nèi)江,'銷售金額'大于100數(shù)據(jù)為:\n",

data1.loc[(data1['城市']=='內(nèi)江')&(data1['銷售金額']>100)])任務(wù)實(shí)訓(xùn)3-10(4)任務(wù)實(shí)訓(xùn)3-11:利用read_excel導(dǎo)入supermarket.xlsx(supermarket.xlsx存放在c:\data路徑中)中的“銷售統(tǒng)計(jì)”工作表(第1張工作表),將導(dǎo)入數(shù)據(jù)的前5行命名為data2,并完成:(1)選取行索引為2到4,“客戶姓名”和“客戶ID”列的

溫馨提示

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

最新文檔

評論

0/150

提交評論