《數(shù)據(jù)采集與預(yù)處理》課件17:數(shù)據(jù)清洗-臟數(shù)據(jù)處理_第1頁
《數(shù)據(jù)采集與預(yù)處理》課件17:數(shù)據(jù)清洗-臟數(shù)據(jù)處理_第2頁
《數(shù)據(jù)采集與預(yù)處理》課件17:數(shù)據(jù)清洗-臟數(shù)據(jù)處理_第3頁
《數(shù)據(jù)采集與預(yù)處理》課件17:數(shù)據(jù)清洗-臟數(shù)據(jù)處理_第4頁
《數(shù)據(jù)采集與預(yù)處理》課件17:數(shù)據(jù)清洗-臟數(shù)據(jù)處理_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)清洗-臟數(shù)據(jù)處理復(fù)習(xí)Pandas數(shù)據(jù)處理的類型?Pandas對數(shù)據(jù)進(jìn)行選擇的常見方法?掌握清洗“臟數(shù)據(jù)”的方法(三種)熟練掌握清洗實際環(huán)境中的各種“臟數(shù)據(jù)”。教學(xué)目標(biāo)1臟數(shù)據(jù)處理方法數(shù)據(jù)清洗-臟數(shù)據(jù)處理臟數(shù)據(jù)處理概念23時序數(shù)據(jù)處理臟數(shù)據(jù)處理概念為什么清洗數(shù)據(jù)?疑問【案例1】某城市空氣質(zhì)量檢測,需要收集大量的空氣數(shù)據(jù),但收集到的數(shù)據(jù)不是很完整,其中有些數(shù)據(jù)由于設(shè)備的原因沒有監(jiān)測到的,有一些數(shù)據(jù)記錄重復(fù),還有一些數(shù)據(jù)是設(shè)備故障時監(jiān)測無效的,這樣導(dǎo)致空氣質(zhì)量檢測不準(zhǔn)確。臟數(shù)據(jù)處理概念行業(yè)內(nèi)數(shù)據(jù)大體上都是不完整、不一致的臟數(shù)據(jù),無法直接進(jìn)行數(shù)據(jù)分析,或分析結(jié)果差強(qiáng)人意?!芭K數(shù)據(jù)”有很多種,常見的分類如下:缺失數(shù)據(jù)異常數(shù)據(jù)重復(fù)數(shù)據(jù)臟數(shù)據(jù)處理概念缺失數(shù)據(jù)缺失數(shù)據(jù)指的是現(xiàn)有數(shù)據(jù)集中某個或某些屬性的值是不完全的。缺失數(shù)據(jù)的產(chǎn)生的原因多種多樣,主要分為機(jī)械原因和人為原因:機(jī)器原因機(jī)械原因是由于機(jī)械原因?qū)е碌臄?shù)據(jù)收集或保存的失敗造成的數(shù)據(jù)缺失。人為原因人為原因是由于人的主觀失誤、歷史局限或有意隱瞞造成的數(shù)據(jù)缺失,主要有以下幾種:有些信息暫時無法獲??;有些信息是被遺漏的;有些對象的某個或某些屬性是不可用的;有些信息(被認(rèn)為)是不重要的;獲取這些信息的代價太大;系統(tǒng)實時性能要求較高。臟數(shù)據(jù)處理概念異常數(shù)據(jù)異常值又稱離群值、壞值。離群值定義為“樣本中的一個或幾個觀測值,它們離開其他觀測值較遠(yuǎn),暗示它們可能來自不同的總體”。異常值是與其他觀測值或預(yù)期數(shù)值有明顯差別的值。在重復(fù)性測量觀測所獲得的一系列觀測值中,出現(xiàn)的與其他值偏離較遠(yuǎn)且不符合統(tǒng)計規(guī)律的個別值就是異常值。臟數(shù)據(jù)處理概念重復(fù)數(shù)據(jù)收集的數(shù)據(jù)量大而多,會出現(xiàn)數(shù)據(jù)重復(fù)的現(xiàn)象,在分析數(shù)據(jù)之前,要把重復(fù)的數(shù)據(jù)去重。臟數(shù)據(jù)處理方法數(shù)據(jù)清理是將數(shù)據(jù)庫精簡、除去重復(fù)記錄,并使剩余部分轉(zhuǎn)換成標(biāo)準(zhǔn)可接收格式的過程。數(shù)據(jù)清理標(biāo)準(zhǔn)模型是將數(shù)據(jù)輸入到數(shù)據(jù)清理處理器,通過一系列步驟“清理”數(shù)據(jù),然后以期望的格式輸出清理過的數(shù)據(jù)。根據(jù)“臟數(shù)據(jù)”不同可以給出相應(yīng)的數(shù)據(jù)清理方法:缺失數(shù)據(jù)解決方式異常值解決方法重復(fù)數(shù)據(jù)消除方法臟數(shù)據(jù)處理方法1、缺失數(shù)據(jù)解決方式大多數(shù)情況下,缺失的值必須手工填入(即手工清理)。缺失值比較多的情況下,數(shù)據(jù)對結(jié)果影響不大可以刪除行/列數(shù)據(jù)。缺失值可以從本數(shù)據(jù)源或其它數(shù)據(jù)源推導(dǎo)出來,可以用平均值、最大值、最小值或更為復(fù)雜的概率估計代替缺失的值,從而達(dá)到清理的目的。臟數(shù)據(jù)處理方法1、缺失數(shù)據(jù)解決方式Pandas中使用DataFrame.isnull()函數(shù)可以查看數(shù)據(jù)是否為空值。確定天氣數(shù)據(jù)是否包含空值,具體代碼如下:運行結(jié)果如下:importpandasaspd#從csv中讀取數(shù)據(jù),還可以讀取html、txt等格式的文件data=pd.read_csv("F:/hz_weather.csv")df=data.set_index('日期')#以最高氣溫為數(shù)據(jù)域,天氣為行、風(fēng)向為列做數(shù)據(jù)視圖df1=pd.pivot_table(df,values=['最高氣溫'],index=['天氣'],columns=['風(fēng)向'])print(df1.insull())臟數(shù)據(jù)處理方法1、缺失數(shù)據(jù)解決方式Pandas中使用DataFrame.fillna()函數(shù)實現(xiàn)其他數(shù)值填充缺失值的功能,具體的語法功能如下:主要參數(shù)解釋:

value:變量、字典、Series,DataFrame;用于填充填充缺失值,或指定為每個索引(對于Series)或列(對于DataFrame)的缺失值使用字典/Series/DataFrame的值填充;

method:{‘backfill’,‘bfill’,‘pad’,‘ffill’,None},默認(rèn)None,pad/ffill表示用前一個非缺失值填充空值,backfill/bfill表示用下一個非缺失值填充空值;

inplace:boolean,默認(rèn)為False。若為True,在原地填滿;

limit:int,默認(rèn)為None,如果指定了方法,則這是連續(xù)的NaN值的前向/后向填充的最大數(shù)downcast:dict,默認(rèn)None,字典中的項為類型向下轉(zhuǎn)換規(guī)則。

DataFrame.fillna(value=None,method=None,axis=None,inplace=False,limit=None,downcast=None,**kwargs)臟數(shù)據(jù)處理方法1、缺失數(shù)據(jù)解決方式在天氣數(shù)據(jù)中使用字符串代替缺失值,具體代碼如下:運行結(jié)果如下:importpandasaspd#從csv中讀取數(shù)據(jù),還可以讀取html、txt等格式的文件data=pd.read_csv("F:/hz_weather.csv")df=data.set_index('日期')#以最高氣溫為數(shù)據(jù)域,天氣為行、風(fēng)向為列做數(shù)據(jù)視圖df1=pd.pivot_table(df,values=['最高氣溫'],index=['天氣'],columns=['風(fēng)向'])df1=df1.fillna('missing')print(df1)臟數(shù)據(jù)處理方法1、缺失數(shù)據(jù)解決方式在天氣數(shù)據(jù)中使用前一個數(shù)據(jù)代替缺失值,具體代碼如下:運行結(jié)果如下:importpandasaspd#從csv中讀取數(shù)據(jù),還可以讀取html、txt等格式的文件data=pd.read_csv("F:/hz_weather.csv")df=data.set_index('日期')#以最高氣溫為數(shù)據(jù)域,天氣為行、風(fēng)向為列做數(shù)據(jù)視圖df1=pd.pivot_table(df,values=['最高氣溫'],index=['天氣'],columns=['風(fēng)向'])df1=df1.fillna(method='pad')print(df1)臟數(shù)據(jù)處理方法1、缺失數(shù)據(jù)解決方式在天氣數(shù)據(jù)中使用后一個數(shù)據(jù)代替缺失值,具體代碼如下:運行結(jié)果如下:importpandasaspd#從csv中讀取數(shù)據(jù),還可以讀取html、txt等格式的文件data=pd.read_csv("F:/hz_weather.csv")df=data.set_index('日期')#以最高氣溫為數(shù)據(jù)域,天氣為行、風(fēng)向為列做數(shù)據(jù)視圖df1=pd.pivot_table(df,values=['最高氣溫'],index=['天氣'],columns=['風(fēng)向'])df1=df1.fillna(method='bfill',limit=1)print(df1)臟數(shù)據(jù)處理方法1、缺失數(shù)據(jù)解決方式在天氣數(shù)據(jù)中使用平均值代替缺失值,具體代碼如下:運行結(jié)果如下:importpandasaspd#從csv中讀取數(shù)據(jù),還可以讀取html、txt等格式的文件data=pd.read_csv("F:/hz_weather.csv")df=data.set_index('日期')#以最高氣溫為數(shù)據(jù)域,天氣為行、風(fēng)向為列做數(shù)據(jù)視圖df1=pd.pivot_table(df,values=['最高氣溫'],index=['天氣'],columns=['風(fēng)向'])df1=df1.fillna(df1.mean())print(df1)臟數(shù)據(jù)處理方法1、缺失數(shù)據(jù)解決方式Pandas中使用DataFrame.dropna()函數(shù)實現(xiàn)刪除缺失值功能,具體的語法功能如下:主要參數(shù)解釋:

axis:{0or‘index’,1or‘columns’},默認(rèn)是0,;0or‘index’表示刪除包含空數(shù)據(jù)的行;1or‘columns’表示刪除包含空數(shù)據(jù)的列;

how:{‘a(chǎn)ny’,‘a(chǎn)ll’},any表示如果存在任何NA值,則放棄該標(biāo)簽,all表示如果所有的值為NA值,則放棄該標(biāo)簽;thresh:int,默認(rèn)值None,intvalue表示要求每排至少N個非NA值。

DataFrameName.dropna(axis=0,how='any',thresh=None,subset=None,inplace=False)臟數(shù)據(jù)處理方法1、缺失數(shù)據(jù)解決方式使用DataFrame.dropna()函數(shù)刪除天氣空值數(shù)據(jù),并且axis=0,具體代碼如下:運行結(jié)果如下:importpandasaspd#從csv中讀取數(shù)據(jù),還可以讀取html、txt等格式的文件data=pd.read_csv("F:/hz_weather.csv")df=data.set_index('日期')#以最高氣溫為數(shù)據(jù)域,天氣為行、風(fēng)向為列做數(shù)據(jù)視圖df1=pd.pivot_table(df,values=['最高氣溫'],index=['天氣'],columns=['風(fēng)向'])df1=df1.dropna(axis=0)print(df1)臟數(shù)據(jù)處理方法1、缺失數(shù)據(jù)解決方式使用DataFrame.dropna()函數(shù)刪除天氣空值數(shù)據(jù),并且axis=1,具體代碼如下:運行結(jié)果如下:importpandasaspd#從csv中讀取數(shù)據(jù),還可以讀取html、txt等格式的文件data=pd.read_csv("F:/hz_weather.csv")df=data.set_index('日期')#以最高氣溫為數(shù)據(jù)域,天氣為行、風(fēng)向為列做數(shù)據(jù)視圖df1=pd.pivot_table(df,values=['最高氣溫'],index=['天氣'],columns=['風(fēng)向'])df1=df1.dropna(axis=1)print(df1)臟數(shù)據(jù)處理方法2、異常數(shù)據(jù)的檢測及解決方式用統(tǒng)計分析的方法識別可能的錯誤值或異常值,如偏差分析、識別不遵守分布或回歸方程的值??捎煤唵我?guī)則庫(常識性規(guī)則、業(yè)務(wù)特定規(guī)則等)檢查數(shù)據(jù)值??捎貌煌瑢傩蚤g的約束、外部的數(shù)據(jù)來檢測和清理數(shù)據(jù)。臟數(shù)據(jù)處理方法2、異常數(shù)據(jù)的檢測及解決方式發(fā)現(xiàn)異常值和極端值的方法是對數(shù)據(jù)進(jìn)行描述性統(tǒng)計,Pandas中describe()可生成描述性統(tǒng)計結(jié)果,自動計算的結(jié)果字段如下:count:非空值數(shù);unique:唯一值數(shù);top:頻率最高數(shù);freq:最高頻數(shù);mean:平均值;std:方差;min:最小值;max:最大值;50%:中位數(shù)。臟數(shù)據(jù)處理方法2、異常數(shù)據(jù)的檢測及解決方式使用describe()函數(shù)生成天氣數(shù)據(jù)的描述性統(tǒng)計結(jié)果,具體代碼如下:運行結(jié)果如下:importpandasaspd#從csv中讀取數(shù)據(jù),還可以讀取html、txt等格式的文件data=pd.read_csv("F:/hz_weather.csv")d=df['最低氣溫']des=d.describe()print(des)臟數(shù)據(jù)處理方法2、異常數(shù)據(jù)的檢測及解決方式基于統(tǒng)計與數(shù)據(jù)分布判斷異常值(如果x的值大于3σ或者小于-3σ,該數(shù)值可以稱為異常值),具體代碼如下:運行結(jié)果如下:importpandasaspd#從csv中讀取數(shù)據(jù),還可以讀取html、txt等格式的文件data=pd.read_csv("F:/hz_weather.csv")d=df['最低氣溫']#最低氣溫的正態(tài)分布zscore=(d-d.mean())/d.std()df['isOutlier']=zscore.abs()>3df['isOutlier'].value_counts()print(df)臟數(shù)據(jù)處理方法3、重復(fù)數(shù)據(jù)的檢測及解決方式合并/清除是消重的基本方法。臟數(shù)據(jù)處理方法3、重復(fù)數(shù)據(jù)的檢測及解決方式Pandas中使用DataFrame.duplicated()函數(shù)判斷數(shù)據(jù)是否有重復(fù)數(shù)據(jù),具體的語法如下:主要參數(shù)解釋:

subset:對應(yīng)值是列名,表示只考慮寫的列,將列對應(yīng)值相同的行進(jìn)行去重,默認(rèn)值None,即考慮所有列;

keep:{'first','last','False},默認(rèn)值,除了第一次出現(xiàn)外,其余相同的被標(biāo)記為重復(fù);last:除了最后一次出現(xiàn)外,其余相同的被標(biāo)記為重復(fù);False:即所有相同的都被標(biāo)記為重復(fù)。DataFrame.duplicated(subset=None,keep='first/last/False')臟數(shù)據(jù)處理方法3、重復(fù)數(shù)據(jù)的檢測及解決方式判斷天氣數(shù)據(jù)是否有重復(fù)數(shù)據(jù),具體的代碼如下:運行結(jié)果如下:importpandasaspd#從csv中讀取數(shù)據(jù),還可以讀取html、txt等格式的文件df=pd.read_csv("F:/hz_weather.csv")data=df.duplicated('最高氣溫')print(data)臟數(shù)據(jù)處理方法3、重復(fù)數(shù)據(jù)的檢測及解決方式Pandas中使用DataFrame.drop_duplicated()方法刪除重復(fù)數(shù)據(jù),具體的語法如下:主要參數(shù)解釋:

subset:對應(yīng)值是列名,表示只考慮寫的列,將列對應(yīng)值相同的行進(jìn)行去重,默認(rèn)值None,即考慮所有列;

keep:{'first','last','False},first:默認(rèn)值,保留第一次出現(xiàn)的重復(fù)行;last:保留最后一次出現(xiàn)的重復(fù)行;False:去除所有重復(fù)行;inplace:{'True','Flase'},True:表示直接在原來的DataFrame上刪除重復(fù)項:False:默認(rèn)值,表示生成一個副本。DataFrame.drop_duplicates(subset=None,keep='first/last/Flase',inplace=True)臟數(shù)據(jù)處理方法3、重復(fù)數(shù)據(jù)的檢測及解決方式刪除天氣數(shù)據(jù)中重復(fù)數(shù)據(jù),具體的代碼如下:運行結(jié)果如下:importpandasaspd#從csv中讀取數(shù)據(jù),還可以讀取html、txt等格式的文件df=pd.read_csv("F:/hz_weather.csv")data=df.drop_duplicates('最高氣溫')print(data)時序數(shù)據(jù)處理1、日期/時間數(shù)據(jù)轉(zhuǎn)換Python程序能用很多方式處理日期和時間,轉(zhuǎn)換日期格式是一個常見的功能。Python提供了一個time模塊可以用于格式化日期和時間。time模塊提供了各種方法用于格式化日期和時間,常見的方法如下:time()方法:返回當(dāng)前時間的時間戳;localtime()方法:格式化時間戳為本地時間;gmtime()方法:函數(shù)用于將一個時間戳轉(zhuǎn)換為UTC時區(qū)(0時區(qū))的struct_time;mktime()方法:用于執(zhí)行與gmtime()、localtime()相反的操作,接收struct_time對象作為參數(shù),返回用秒數(shù)表示時間的浮點數(shù);strftime()方法:用于接收時間元組,并返回以可讀字符串表示的當(dāng)?shù)貢r間;......時序數(shù)據(jù)處理1、日期/時間數(shù)據(jù)轉(zhuǎn)換使用time()方法打印系統(tǒng)時間戳,具體代碼如下:運行結(jié)果如下:importtime#使用time()方法打印系統(tǒng)時間戳tim=time.time()print(tim)時序數(shù)據(jù)處理1、日期/時間數(shù)據(jù)轉(zhuǎn)換使用loacltime()方法格式化時間戳,具體代碼如下:運行結(jié)果如下:importtime#使用localtime()格式化時間戳tim=time.lcoaltime()print(tim)時序數(shù)據(jù)處理1、日期/時間數(shù)據(jù)轉(zhuǎn)換使用strftime()方法返回字符串類型的本地時間,具體代碼如下:運行結(jié)果如下:importtime#使用strtime()返回字符串類型的本地時間tim=time.localtime()strtime=time.strftime('%Y-%m-%d%X',tim)print(strtime)時序數(shù)據(jù)處理1、日期/時間數(shù)據(jù)轉(zhuǎn)換使用strftime()方法將時間戳變成系統(tǒng)時間,具體代碼如下:運行結(jié)果如下:importtime#使用strtime()返回字符串類型的本地時間tim=time.localtime(1496044286.0)strtime=time.strftime('%Y-%m-%d%X',tim)print(strtime)時序數(shù)據(jù)處理2、時序數(shù)據(jù)操作Pandas中的date_range()方法是返回固定頻率的時間索引,具體的語法如下:主要參數(shù)解釋:

start:string或datetime-like類型,默認(rèn)為None,表示開始時間;end:string或datetime-like類型,默認(rèn)為None,表示結(jié)束時間;periods:integer類型,默認(rèn)為None,表示要生成的周期數(shù);freq:string或DateOffset類型,默認(rèn)為‘D’,表示頻率;tz:string類型,默認(rèn)為None類型,表示返回本地化日期時間索引的時區(qū)名稱,例如Asia/Hong_Kong;normalize:bool類型,默認(rèn)為False,表示在生成日期范圍之前,將開始/結(jié)束日期規(guī)范化為午夜;name:string類型,默認(rèn)為None,表示生成的DatetimeIndex的名稱;closed:{None,‘left’,‘right’},默認(rèn)為None,給定時間區(qū)間的閉合。pandas.date_range(start=None,end=None,periods=None,freq='D',tz=None,normalize=False,name=None,closed=None,**kwargs)時序數(shù)據(jù)處理2、時序數(shù)據(jù)操作freq參數(shù)包含多種頻率參數(shù),常用頻率參數(shù)如下:W:以周為頻率單位;H:以小時為頻率單位;D:以天為頻率單位;T,min:以分鐘為頻率單位;S:以秒為頻率單位;A,Y:以年為頻率單位;M:以月為頻率單位;......時序數(shù)據(jù)處理2、時序數(shù)據(jù)操作使用date_range()方法輸出1月31天的數(shù)據(jù),具體的代碼如下:運行結(jié)果如下:importpandasaspd#生成1月份31天的日期data=pd.date_range('2020-1-1',periods=31)print(data)時序數(shù)據(jù)處理2、時序數(shù)據(jù)操作可將時間設(shè)置為序列的索引,具體的代碼如下:importnumpyasnpimportpandasaspd#index是時間序列index=pd.date_range('2020-1-100:00',periods=31)data=np.arange(31)ts=pd.Series(data,index=index)#找到索引對應(yīng)的數(shù)據(jù)ts1=ts['2020-1-3']print('thedataofindex:',ts1)#獲取第2個索引對應(yīng)的年月日year=ts.index[2].yearmonth=ts.index[2].monthday=ts.index[2].dayprint('theyearis',year)print('themonthis',month)print('thedayis',day)時序數(shù)據(jù)處理3、天氣數(shù)據(jù)分析與處理本節(jié)使用天氣數(shù)據(jù)進(jìn)行時序分析,天氣數(shù)據(jù)包含:日期、最高氣溫、最低氣溫、天氣、風(fēng)向、風(fēng)力等維度,具體數(shù)據(jù)如下圖所示:時序數(shù)據(jù)處理3、天氣數(shù)據(jù)分析與處理(1)時序分析首先讀取天氣數(shù)據(jù),具體代碼如下:運行結(jié)果如下:importpandasaspd#從csv中讀取數(shù)據(jù),還可以讀取html、txt等格式的文件data=pd.read_csv("F:/hz_weather.csv")df=data[['日期','最高氣溫','最低氣溫']]print(df.head())時序數(shù)據(jù)處理3、天氣數(shù)據(jù)分析與處理(

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論