Python數(shù)據(jù)分析與可視化教案3.5 數(shù)據(jù)的去空與去重_第1頁
Python數(shù)據(jù)分析與可視化教案3.5 數(shù)據(jù)的去空與去重_第2頁
Python數(shù)據(jù)分析與可視化教案3.5 數(shù)據(jù)的去空與去重_第3頁
Python數(shù)據(jù)分析與可視化教案3.5 數(shù)據(jù)的去空與去重_第4頁
Python數(shù)據(jù)分析與可視化教案3.5 數(shù)據(jù)的去空與去重_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、課 題3. 5數(shù)據(jù)的去空與去重課 型講練授課班級大數(shù)據(jù)授課時數(shù)2教學(xué)目標.能夠按要求刪除數(shù)據(jù)的空值。.能夠按要求刪除數(shù)據(jù)的重復(fù)值。教學(xué)重點.能夠按要求刪除數(shù)據(jù)的空值。.能夠按要求刪除數(shù)據(jù)的重復(fù)值。教學(xué)難點.能夠按要求刪除數(shù)據(jù)的空值。.能夠按要求刪除數(shù)據(jù)的重復(fù)值。去空和去重是數(shù)據(jù)預(yù)處理中的重要的一環(huán),一般的數(shù)據(jù)往往需要進行去學(xué)情分析學(xué)情分析空和去重之后才能分析。數(shù)據(jù)去重時,可按照橫向和縱向兩種方向進行去重, 對于按縱向刪除重復(fù)列的情況較少。在對數(shù)據(jù)進行預(yù)處理時,去空和去重是兩個非常重要的方法。去空是指去除帶有 空值的數(shù)據(jù),去重是指去除重復(fù)數(shù)據(jù)。一、數(shù)據(jù)去空數(shù)據(jù)中的某個或某些特征的值是不完整的,這

2、些值稱為缺失值,簡單來說,缺失 值就是空值。.查看空值pandas提供了識別空值的方法isnull,這種方法在使用時返回的都是布爾值True 和False。再結(jié)合sum函數(shù),可以檢測出數(shù)據(jù)中每列的空值頻數(shù),統(tǒng)計各列空值頻數(shù) 的一般用法為:_DataFrame.isnull().sum()例如代碼如下:import numpy as npimport pandas as pdarr = np.arange( 1,17).reshape(4,4)data = pd.DataFrame(air,columns=,a,b,c,/d,)data.ilocl :3,1:4 = np.nan#表示將行索引編

3、號1到2,列索引編號1到3的數(shù)據(jù)都設(shè)為空值data.loc|0,3/b,l = np.nan#表示將行索引編號1和3,列索引b的數(shù)據(jù)都設(shè)為空值print(初始數(shù)據(jù)為據(jù)”,data)print(各列的空值頻數(shù)為:rT,data.isnull().sum()【結(jié)果分析】利用np. nan可以生成DataFrame的空值。輸出結(jié)果如圖3-*所示。Run:3-5AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/3-5.py初始數(shù)據(jù)為:a b c d1方01NaN3.04.015NaNNaNNaN.29NaN

4、NaNNaNW3 13 NaN 15.0 16.0 各列的空值頻數(shù)為:a 0b 4c 2d 2dtype: int64Process finished with exit code 0圖3-*統(tǒng)計各列的空值頻數(shù)例如結(jié)果2 .刪除空值刪除空值是刪除帶有空值的行或列,它屬于利用減少樣本量來換取信息完整度的 一種方法,是一種最簡單的空值處理方法。pandas中提供了刪除空值的dr叩na函數(shù), 該函數(shù)可以刪除帶有空值的行或列。在實際操作中,刪除帶有空值的行的情況比擬多。 dropna函數(shù)的一般用法為:DataFrame.dropna(axis,how,subset=columns,inplace)其中

5、,各個參數(shù)的作用如下:axis接收。或1。axis=0表示刪除空值所在的行,axis=l表示刪除空值所在的列。默認為axis=O,即刪除空值所在的行。how表示刪除空值數(shù)據(jù)的方式。how二,any,表示只要有空值存在就刪除。how-all 表示當且僅當全部為空值時就刪除。默認為any。subset表示進行去空操作的列或行。按行刪除時,subset表示columns列名,而 按列刪除時,subset表示行索引index。inplace表示刪除結(jié)果是否替換原表,默認為False。(1)刪除空值所在行刪除空值所在行的一般用法為:DataFrame.dropna(axis=0,how,subset,i

6、nplace)其中,axis=0為刪除空值所在的行。subset表示按行刪空時,需要考慮的列。例如代碼如下:data_dropl = data.dropna(axis=0,how=any,subset=aVb7c)print(刪除abc三列中任意一列中出現(xiàn)空值的行:n”,data_dropl)data_drop2 = data.dropna(axis=0,how=all,subset=a?b,c)print(刪除abc三列中任全部都為空值的行:n”,data_drop2) 輸出結(jié)果如圖3-*所示。Run:3-5AC:UsersliliangAnaconda3python.exe C:/User

7、s/liliang/PycharmProjects/sjfx/3-5.py初始數(shù)據(jù)為: abed rp 0 1.0 2.0 3.0 4.0 1 NaN NaN NaN NaN ” . 2 9.0 NaN NaN NaNW 3 NaN NaN 15.0 16.0 刪除abc三列中任意一列中出現(xiàn)空值的行: abed0 1.0 2.0 3.0 4.0刪除abc三列中任全部都為空值的行: abed01.02.03.04.029.0NaNNaNNaN3NaNNaN15.016.0Process finished with exit code 0圖3-*刪除空值所在行例如結(jié)果【結(jié)果分析】axis=0表示按

8、行刪空,subset表示列名,進一步分析abc三列。 在how=any的情況下,行索引為1、2、3三條數(shù)據(jù)都有任意一列出現(xiàn)空值,所以都 被刪除了,只保存了索引號為0的行數(shù)據(jù)。在how=al I 的情況下,只有行索引為1的 一條數(shù)據(jù)三列都是空值,所以行索引為1的行數(shù)據(jù)被刪除了,保存了索引號為0、2、 3的行數(shù)據(jù)。(2)刪除空所在值列刪除空值所在列的情況較少,因為通常情況下,不會因為一列中存在一個空值而 把整個一列都刪除,這樣喪失的信息量就會太大。_刪除空值所在列的一般用法為:_DataFrame.dropna(axis= 1,how,subset,inplace)其中,axis=l為刪除空值所在

9、的列。在按列刪空時,how一般取就,默認也是 all,表示只有當一列中所有行或指定行都為空值才刪除該列。subset表示按列刪空時, 需要考慮的行,默認是所有行,也可以指定行。在實際操作中,很少會出現(xiàn)一列都是空值的情況,因為如果一列都是空值,那么這一列也就沒有包含任何信息。例如代碼如下:data_drop3 = data.dropna(axis= 1 ,how=air,subset=range(2,len(data)print。按列刪空,刪除行索引2之后全部都為空值的列:n”,data_drop3)【結(jié)果分析】len(data)表示數(shù)據(jù)的長度,即I en (data)等于4 , range (

10、2, len (data)就是指range (2, 4),因為range表示的是左閉右開的列表,即行 索引2和3,所以range (2, I en (data)就可以表示行索引2之后的全部行。輸出結(jié)果如圖3-*所示。Run:3-5Process finished with exit code 0C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/3-5.py 初始數(shù)據(jù)為:abed0 1.0 2.03.04.0X1 NaN NaNNaNNaN2 9.0 NaNNaNNaN3 NaN NaN 15.0 16

11、.0按列刪空,刪除行2之后全部都為空值的列: acd01.03.04.0NaNNaNNaN9.0NaNNaNNaN15.016.0圖3-*刪除空所在值列例如結(jié)果【結(jié)果分析】按列刪空時,subset表示行索引號,進一步分析行索引號2之后 的所有行。在how默認等于all的情況下,b列行索引2和行索引3都是空值,所 以b列被刪除了,保存了 a、c、d列的數(shù)據(jù)。二、數(shù)據(jù)去重去除重復(fù)數(shù)據(jù)也是數(shù)據(jù)分析經(jīng)常面對的問題之一,常見的重復(fù)值完全相同的行數(shù) 據(jù),或是某幾列相同的行數(shù)據(jù)。.查看重復(fù)值去除重復(fù)數(shù)據(jù)之前,首先需要了解數(shù)據(jù)中的重復(fù)情況,pandas提供了 duplicates 函數(shù),用來查看數(shù)據(jù)中的重復(fù)情

12、況,duplicates函數(shù)一般用法為:DataFrame.duplicates(subset, inplace)其中,subset表示列名。默認為None,表示全部列,即如果一行的所有列出現(xiàn)重 復(fù)就返回結(jié)果。,刪除重復(fù)值去除重復(fù)數(shù)據(jù)可以使用pandas提供的去重drop_duplicates函數(shù)。使用 drop_duplicates函數(shù)對數(shù)據(jù)進行去重,不會改變數(shù)據(jù)源的原始排列,并且具有代碼簡 潔和運行穩(wěn)定的優(yōu)點。drop_duplicates函數(shù)的一般用法為:DataFrame.drop_duplicates(subset, keep, inplace)其中,subset表示列名。默認為No

13、ne,表示全部列,即如果一行的所有列出現(xiàn)重 復(fù)就刪除。keep表示出現(xiàn)重復(fù)時保存第一次出現(xiàn)的數(shù)據(jù)還是最后一次出現(xiàn)的數(shù)據(jù),first 表示保存第一次出現(xiàn)的數(shù)據(jù),last表示保存最后一次出現(xiàn)的數(shù)據(jù)。默認為first,即如 果出現(xiàn)重復(fù),保存第一次出現(xiàn)的數(shù)據(jù)。任務(wù)實訓(xùn)任務(wù) 1 :利用 read excel 導(dǎo)入 supermarket.xlsx (supermarket.xlsx 存放在 c:data 路徑中)中的“銷售統(tǒng)計”工作表(第1張工作表),將導(dǎo)入數(shù)據(jù)的前5行命名為datal,并完成:(1)統(tǒng)計各列的空值頻數(shù)。(2)刪除“客戶ID”和“客戶姓名”都是空值的行。(3)刪除一列中所有的值都為空值的

14、列。任務(wù)1 (1)具體代碼如下: pd.set_option(display.max_columns,None) pd.set_optionCdisplay. width*,None)pd.set_option(,True)datal = pd.read_excel(c:datasupermarket.xlsx).head print(導(dǎo)入的數(shù)據(jù)為:ndatal)result = datal.isnull().sum()print(各列的空值頻數(shù)為:n,resultresult0) #通過resultresultO僅僅顯示出現(xiàn) 空值的列輸出結(jié)果如圖3-*所示。17* 10產(chǎn)品ID產(chǎn)品名稱客戶I

15、D客戶姓名省城市ta分 仃國日期 發(fā)貨日期取價 na記金靜折扣析扣金做0US-2018-1357144辦公用-用品-10002717Fiskars野刀,藍色14485.0NaN涌江杭州公司 2018-04-27 2018-04-296521300.451CN-2018-1973789辦公用-信封-10004832Globeweis搭扣信封,紅色10165.0許安四川內(nèi)江消費者 2018-86-15 2018-06-196321260.02CN-2018-1973789辦公用-裝訂-10001505Cardinal孔加固材料,回收1016S.0許安四川內(nèi)江消費者 2018-O6-1S 2018-

16、06-19162320.4與3US-2018-3017568辦公用-用8-10003746Kleencut開信刀,工業(yè)NaNNaN江蘇慎江公司 2018-12-09 2018-12-138043200.44CN-2017-2975416力公用183352KitchenAid攪搏機,黑色15730.0萬絲廣東汕頭消費者 2917-05-31 2017-06-02459313770.0Run:3-S導(dǎo)入的收媚為:各那么的空值跖U為:客戶ID 1客戶姓名 2折扣金獻 5dtype: int64r aN Nail NahhaM Na iProcess finished with exit code 0

17、圖3.*任務(wù)1(1)輸出結(jié)果任務(wù)1 (2)具體代碼如下:datal_dropl = datal .dropna(axis=0,how=an,subset=客戶 ID?客戶姓名口) print(”刪除“客戶ID”和“客戶姓名”都是空值的行:n”,datal_dropl) 輸出結(jié)果如圖3-*所示。Run:3-5C:U$er$li1iangAnaconda3python.exe C:/U$er5/liliang/PycharmProject$/sjfx/3-5.py 前除“客戶ID”和“客戶姓名”都是空俺的行:tr* id產(chǎn)品ID產(chǎn)品名稱客戶ID客戶姓名省城市細分、訂單日期發(fā)貨日期單價數(shù)隹售金璇折扣

18、折扣金額S:rp0US-2018-1357144辦公用-用品-10002717Fiskars 91J),R色14485.0NaN潮江杭州公司2018-04-272018-04296S.02.0130.00.4NaN1CN 2018-1973789辦公用-信封-10004832GlobeWeis停扣信封.紅色10165.0許安四川內(nèi)江201806-152018-06-1963.02.0126.00.0NaN*二2CN-2018-1973789辦公用裝訂-1000150sCardinal孔加固材料,10165.0許安四川內(nèi)江消費者2018-06-1S2018-06-1916.02.032.00.4

19、NaN4CN-2017-2975416辦公用-器具-100。3452KitchenAid 儻拌機.黑色15730.0萬蘭廣東汕頭消費召2017-05-312017-06-02459.03.01377.00.0NaNProcess finished with exit code 0圖3.*任務(wù)1 (2)輸出結(jié)果【結(jié)果分析】從結(jié)果中可以看到,因為行索引為3的“客戶ID”和“客戶姓名” 都是空值,所以這一行被刪除了。任務(wù)1 (3)具體代碼如下: data 1 _drop2 = data 1 .dropna(axis= 1 ,how=air)print(刪除一列中所有的值都為空值的列:n”,datal

20、_drop2) 輸出結(jié)果如圖3-*所示。Run:3-5C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/3-5.py除一列中所有的值都為空值的列:iT* ID產(chǎn)品ID產(chǎn)品名琳客戶ID客戶姓名省城市他分 訂早日期發(fā)貨日期價銷件金額折扣220US-2018-13S7144辦公用-用品-10002717Fiskars 喇刀,藍色14488.0NaN游江杭州公3 2018-04-272018-04-2965.02.0130.00.41CN-2018-1973789辦公用-信封10004832GlobeWeis

21、 梏相信14,紅色10165.0許安四川內(nèi)江消費省 2018-06-152018-06-1963.02.0126.00.0*2CN-2018-1973789辦公用-裝訂-10001505Cardinal孔加固材料,回收10165.0許安四川內(nèi)江消費者 2018-06-1S2018-06-1916.02.032.00.43US-2018-3017568辦公用-用品-10003746Kleencut開信刀,工業(yè)NaNNaN江芬慎江公司 2018-12-092018-12-1380.04.0320.00.44CN-2017-297S416辦公用器具-10003452KitchenAid 授樣機,黑色

22、15730.0萬蘭廣東汕頭消費者 2017-05-312017-06-02459.03.01377.00.0Process finished with exit code 0圖3-*任務(wù)1 (3)輸出結(jié)果【結(jié)果分析】從結(jié)果中可以看到,因為“折扣金額”這一列的所有值都為空值, 所以這一列被刪除了。任務(wù) 2:利用 read_excel 導(dǎo)入 supermarket.xlsx (supermarket.xlsx 存放在 c:data 路 徑中)中的“銷售統(tǒng)計,工作表(第1張工作表),將導(dǎo)入數(shù)據(jù)的前50行命名為data2, 并完成:(1)根據(jù)shape屬性,查看數(shù)據(jù)data2的行數(shù)。(2)利用dupl

23、icates函數(shù),查看“訂單ID”、“產(chǎn)品ID”、“產(chǎn)品名稱”三列出現(xiàn) 重復(fù)的數(shù)據(jù)的前10列。(3)利用drop_duplicates函數(shù),刪除“訂單ID”、“產(chǎn)品ID”、“產(chǎn)品名稱”三 列出現(xiàn)重復(fù)的數(shù)據(jù),并保存第一次出現(xiàn)的數(shù)據(jù),結(jié)果存放在data2_drop中,查看 data2_drop的前15行與前10列。(4)根據(jù)shape屬性,查看數(shù)據(jù)data2_drop的行數(shù)。任務(wù)2 (1)具體代碼如下:print(ndata2 的行數(shù)為:,data2.shape0)輸出結(jié)果如圖3-*所示。Run:3-5AC:UsersliliangAnaconda3python.exe C:/Users/lili

24、ang/PycharmProjects/sjfx/3-5.pydata2的行數(shù)為:50 Process finished with exit code 0 圖3-*任務(wù)2 (1)輸出結(jié)果任務(wù)2 (2)具體代碼如下:data2_dup = data2data2.duplicated(訂單 ID?產(chǎn)品 ID?產(chǎn)品名稱)print,”訂單ID?產(chǎn)品ID?產(chǎn)品名稱,出現(xiàn)重復(fù)的數(shù)據(jù)為:n”,data2_dup.ilocS10)輸出結(jié)果如圖3-*所示。Run:3-5C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx

25、/3-5.py ,訂單I/產(chǎn)品ID,產(chǎn)品名稱,出現(xiàn)重復(fù)的數(shù)據(jù)為:訂單ID產(chǎn)品ID產(chǎn)品名稱客戶ID客戶姓名省城市細分訂單日期發(fā)貨日期F58CN-2016-4497736辦公用-系固-1000480TStockwell橡皮筋,整包18325.0俞明江西景德鎮(zhèn)消費者2016-10-27201610-319CN-2016-4497736辦公用-系固-10004801Stockwell橡皮筋,整包18325.0俞明江西景德鎮(zhèn)消費者2016-10-27201610-3113CN-2016-2752724辦公用-信封-10000017Jiffy局間信封,銀色10885.0趙嬋山東青島消費者2016-06-0

26、5201606-0914CN-2016-2752724辦公用-信封-100000173iffy局間信封,銀色10885.0趙嬋山東青島消費者2016-06-05201606-0921CN-2018-5631342辦公用-裝訂-10004369Cardinal裝訂機,回收14050.0白鵠上海上海消費者2018-10-02201810-0422CN-2018-5631342辦公用-裝訂-10004369Cardinal裝訂機,回收14050.0白鵠上海上海消費者2018-10-02201810-0423CN-2018-5631342辦公用-裝訂-10004369Cardinal裝訂機,回收140

27、50.0白鵠上海上海消費者2018-10-02201810-04Process finished with exit code 0圖3-*任務(wù)2 (2)輸出結(jié)果【結(jié)果分析】iloc函數(shù)可以按照先行(行索引編號)后列(列索引編號)的順 序選取數(shù)據(jù),在中,逗號前的“:”表示默認選取所有行,逗號后的“:10”表示從默認列索引。到9,原因是左閉右開索引區(qū)間,所以10是不能取到的,因此 就是前10列。任務(wù)2 (3)具體代碼如下:data2_drop = data2.drop_duplicates(subset=f 訂單 ID?產(chǎn)品 ID?產(chǎn)品名稱 ,keep=,first,)print,訂單ID?產(chǎn)品I

28、D;產(chǎn)品名稱,出現(xiàn)重復(fù)的數(shù)據(jù)刪除后的數(shù)據(jù)為:n,data2_drop.iloc: 15,: 10)輸出結(jié)果如圖3-*所示。Rum3-5C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharProjects/sjfx/3-5.py,訂單ID,產(chǎn)品nr,產(chǎn)品名稱出現(xiàn)至復(fù)的數(shù)據(jù)IB除后的數(shù)拈為: 9 ,訂單ID產(chǎn)品ID產(chǎn)品名稱客戶ID客戶姓名省城市細分 訂單日期發(fā)貨日期rp0US-2018-1357144辦公用-用品-10002717Fiskars剪刀,鑒色14485.0NaN浙江杭州公司2018-04-272018-04-291CN-20

29、18-1973789辦公用-信封-10004832GlobeWeis搭扣信封,紅色10165.0許安四川內(nèi)江消費者2018-06-152018-06-192CN-2018-1973789辦公用-裝訂-10001505Cardinal孔加固材料,回收10165.0許安四川內(nèi)江消費者2018-06-152018-06-193US-2018-3017568辦公用用品-10003746Kleencut開信刀,工業(yè)NaNNaN江蘇鎮(zhèn)江公司2018-12-092018-12-134CM-2617-2975416辦公用-器具10003452KitchenAid 攪拌機,36色15730.0萬蘭廣東汕頭一費者

30、2017-05-312017-06-025CN-2016-4497736技術(shù)-設(shè)各-10001640柯尼卡打印機,紅色18325.0南明江西景德懾消費占2016-10-272016-10-316CN-2016 4497736辦公用-裝訂-10001029Ibico訂書機,實惠18325.0俞明江西景他鎮(zhèn)消費者2016-10-272016-10-317CN-2016 4497736辦公用系固-10004801Stockwell橡皮筋,空包18325.0南明江西景德鎮(zhèn)消費152016-10-272016-10-3110CN-2015 4195213技術(shù)-設(shè)名-10000001愛普生計算器,耐用21700.0謝霎陜西榆林小星企業(yè)2015-12-222015-12-2411CN-2018-5801711技術(shù)-復(fù)印-10002416惠吉墨水,紅色19585.0康而累龍江哈爾濱消費國2018-06-012018-06-0612CN-2016-2752724辦公用-信封-10000017Jiffy局間信封,板色10885.0趙嬋

溫馨提示

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

評論

0/150

提交評論