




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
使用pandas進行數據預處理1清洗數據目錄合并數據2標準化數據3轉換數據4橫向堆疊,即將兩個表在x軸向拼接在一起,可以使用concat函數完成。concat函數的基本使用格式如下。concat函數的常用參數及其說明如下表。堆疊合并數據1.橫向堆疊參數名稱參數說明objs接收多個Series、DataFrame、Panel的組合。表示參與連接的pandas對象的列表的組合。無默認值axis接收int。表示連接的軸向,可選0和1。默認為0pandas.concat(objs,axis=0,join='outer',ignore_index=False,keys=None,levels=None,names=None,verify_integrity=False,sort=False,copy=True)concat函數的常用參數及其說明(續表)。堆疊合并數據參數名稱參數說明join接收str。表示其他軸向上的索引是按交集(inner)還是并集(outer)進行合并。默認為outerignore_index接收bool。表示是否不保留連接軸上的索引,產生一組新索引range(total_length)。默認為Falsekeys接收sequence。表示與連接對象有關的值,用于形成連接軸向上的層次化索引。默認為Nonelevels接收包含多個sequence的list。表示在指定keys參數后,指定用作層次化索引各級別上的索引。默認為Nonenames接收list。表示在設置了keys和levels參數后,用于創建分層級別的名稱。默認為Noneverify_integrity接收bool。表示檢查新連接的軸是否包含重復項,如果發現重復項,那么引發異常。默認為Falsesort接收bool。表示對非連接軸進行排序。默認為Falsecopy接受bool。表示是否有必要復制數據。默認為True當參數axis=1時,concat函數可做行對齊,然后將不同列名稱的兩張或多張表合并。當兩個表索引不完全一樣時,可以設置join參數選擇是內連接還是外連接。在內連接的情況下,僅僅返回索引重疊部分數據;在外連接的情況下,則顯示索引的并集部分數據,不足的地方則使用空值填補,橫向堆疊外連接示例如圖所示。當兩份數據行索引完全一樣時,不論join參數的取值是inner或outer,結果都是將兩個表完全按照x軸拼接起來。堆疊合并數據使用concat函數時,在默認情況下,即axis=0,concat函數做列對齊,將不同行索引的兩張或多張表縱向合并。在兩張表的列名并不完全相同的情況下,可以使用join參數。當join參數取值為inner時,返回的僅僅是列名的交集所代表的列。當join參數取值為outer時,返回的是兩者列名的并集所代表的列。其原理示意如圖。當兩張表的列名完全相同時,不論join參數的取值是inner還是outer,結果都是將兩個表完全按照y軸拼接起來。堆疊合并數據2.縱向堆疊主鍵合并,即通過一個或多個鍵將兩個數據集的行連接起來,類似于SQL中的join。針對兩張包含不同特征的表,將根據某幾個特征做為主鍵,將表一一對應拼接起來
,合并后數據的列數為兩個原數據表的列數之和減去主鍵列的數量
主鍵合并數據和數據庫的join一樣,merge函數也有左連接(left)、右連接(right)、內連接(inner)和外連接(outer)。比起數據庫SQL語言中的join,merge函數還有其自身獨到之處,如可以在合并過程中對數據集中的數據進行排序等,merge函數的基本使用格式如下。根據merge函數中的參數說明,并按照需求修改相關參數,即可以多種方法實現主鍵合并。主鍵合并數據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函數的常用參數及其說明。主鍵合并數據參數名稱參數說明left接收DataFrame或Series。表示要添加的新數據1。無默認值right接收DataFrame或Series。表示要添加的新數據2。無默認值how接收“inner”“outer”“left”或“right”。表示數據的連接方式。默認為inneron接收str或sequence。表示兩個數據合并的主鍵(必須一致)。默認為Noneleft_on接收str或sequence。表示left參數接收數據用于合并的主鍵。默認為Nonemerge函數的常用參數及其說明(續表)。主鍵合并數據參數名稱參數說明right_on接收str或sequence。表示right參數接收數據用于合并的主鍵。默認為Noneleft_index接收bool。表示是否將left參數接收數據的index作為連接主鍵。默認為Falseright_index接收bool。表示是否將right參數接收數據的index作為連接主鍵。默認為Falsesort接收bool。表示是否根據連接鍵對合并后的數據進行排序。默認為Falsesuffixes接收tuple。表示用于追加到left和right參數接收數據列名相同時的后綴。默認為('_x','_y')除了使用merge函數以外,使用join()方法也可以實現部分主鍵合并的功能。但是當使用join()方法時,兩個主鍵的名字必須相同,join()方法的基本使用格式如下。主鍵合并數據pandas.DataFrame.join(other,on=None,how='left',lsuffix='',rsuffix='',sort=False,validate=None)join()函數的常用參數及其說明。主鍵合并數據參數名稱參數說明other接收DataFrame、Series或包含多個DataFrame的list。表示參與連接的其他DataFrame。無默認值on接收列名、包含列名的list或tuple。表示用于連接的列名。默認為Nonehow接收特定str。表示連接方式。當取值為“inner”時代表內連接;當取值為“outer”時代表外連接;當取值為“left”時代表左連接;當取值為“right”時代表右連接。默認為leftlsuffix接收str。表示追加到左側重疊列名的后綴。無默認值rsuffix接收str。表示追加到右側重疊列名的后綴。無默認值sort接收bool。表示根據主鍵對合并后的數據進行排序。默認為False在數據分析和數據處理過程中偶爾會出現兩份數據的內容幾乎一致的情況,但是某些特征在其中一張表上是完整的,而在另外一張表上的數據則是缺失的。combine_first()方法來進行重疊數據合并,其原理如下圖所示。重疊合并數據combine_first()方法的基本使用格式如下。combine_first()方法的常用參數及其說明表如下。重疊合并數據參數名稱參數說明other接收DataFrame。表示參與重疊合并的另一個DataFrame。無默認值pandas.DataFbine_first(other)1清洗數據目錄合并數據2標準化數據3轉換數據4記錄重復,即一個或多個特征的某幾條記錄的值完全相同。方法一:利用列表(list)去重,自定義去重函數。方法二:利用集合(set)元素唯一的特性去重。比較上述兩種方法可以發現,方法一代碼冗長。方法二看似代碼簡潔了許多,但是會導致數據的排列發生改變。檢測與處理重復值1.記錄重復pandas提供了一個名為drop_duplicates的去重方法,使用該方法進行去重不會改變數據原始排列,并且兼具代碼簡潔和運行穩定的特點。不僅支持單一特征的數據去重,還能夠依據DataFrame的其中一個或多個特征進行去重操作。drop_duplicates()方法的基本使用格式如下。檢測與處理重復值pandas.DataFrame.drop_duplicates(subset=None,keep='first',inplace=False,ignore_index=False)drop_duplicates()方法的常用參數及其說明。檢測與處理重復值參數名稱參數說明subset接收str或sequence。表示進行去重的特征。默認為Nonekeep接收特定str。表示重復時保留第幾個數據,“first”表示保留第一個;“last”表示保留最后一個;False表示只要有重復都不保留。默認為firstinplace接收bool。表示是否在原表上進行操作。默認為Falseignore_index接收bool。表示是否忽略索引。默認為False結合相關的數學和統計學知識,要去除連續的特征重復,可以利用特征間的相似度將兩個相似度為1的特征去除其中一個。在pandas中,相似度的計算方法為corr()。使用該方法計算相似度時,默認為pearson法,可以通過method參數進行調節,目前還支持spearman法和kendall法。通過相似度矩陣去重存在一個弊端是只能對數值型重復特征去重,類別型特征之間無法通過計算相似系數來衡量相似度,因此無法根據相似度矩陣對其進行去重處理。除了使用相似度矩陣進行特征去重之外,還可以通過equals()方法進行特征去重。檢測與處理重復值2.特征重復equals()方法的基本使用格式如下。equals()方法的參數說明表如下。檢測與處理重復值參數名稱參數說明other接收Series或DataFrame。表示要與第一個Series或DataFrame進行比較的另一個Series或DataFrame。無默認值pandas.DataFrame.equals(other)在數據中的某個或某些特征的值是不完整的,這些值稱為缺失值。pandas提供了識別缺失值的isnull()方法以及識別非缺失值的notnull()方法,這兩種方法在使用時返回的都是布爾值,即True和False。結合sum函數、isnull()方法和notnull()方法,可以檢測數據中缺失值的分布以及數據中一共含有多少缺失值。isnull()方法和notnull()方法的結果正好相反,因此使用其中任意一個都可以識別出數據是否存在缺失值。檢測與處理缺失值刪除法是指將含有缺失值的特征或記錄刪除。刪除法分為刪除觀測記錄和刪除特征兩種,它屬于通過減少樣本量來換取信息完整度的一種方法,是一種較為簡單的缺失值處理方法。pandas中提供了簡便的刪除缺失值的dropna()方法,通過控制參數,既可以刪除觀測記錄,又可以刪除特征。dropna()方法的基本使用格式如下。檢測與處理缺失值1.刪除法pandas.DataFrame.dropna(*,axis=0,how=any,thresh=None,subset=None,inplace=False,ignore_index=False)dropna()方法的常用參數及其說明。檢測與處理缺失值參數名稱參數說明axis接收0或1。表示軸向,0為刪除觀測記錄(行),1為刪除特征(列)。默認為0how接收特定str。表示刪除的形式,當取值為any時,表示只要有缺失值存在就執行刪除操作;當取值為all時,表示當且僅當全部為缺失值時才執行刪除操作。默認為anythresh接收int。表示保留至少含有n(thresh參數值)個非空數值的行。默認為Nonesubset接收array。表示進行去重的列/行。默認為Noneinplace接收bool。表示是否在原表上進行操作。默認為False替換法是指用一個特定的值替換缺失值。特征可分為數值型和類別型,兩者出現缺失值時的處理方法也是不同的。當缺失值所在特征為數值型時,通常利用其均值、中位數或眾數等描述其集中趨勢的統計量來代替缺失值。當缺失值所在特征為類別型時,則選擇使用眾數來替換缺失值。檢測與處理缺失值2.替換法pandas庫中提供了缺失值替換的fillna()方法,fillna()方法的基本使用格式如下。fillna()方法的常用參數及其說明如下。檢測與處理缺失值pandas.DataFrame.fillna(value=None,method=None,axis=None,inplace=False,limit=None,downcast=None)參數名稱參數說明value接收scalar、dict、Series或DataFrame。表示用于替換缺失值的值。默認為Nonemethod接收特定str。表示填補缺失值的方式。當取值為“backfilll”或“bfill”時表示使用下一個非缺失值來填補缺失值;當取值為“pad”或“ffill”時表示使用上一個非缺失值來填補缺失值。默認為Nonefillna()方法的常用參數及其說明(續表)。檢測與處理缺失值參數名稱參數說明axis接收0或1。表示軸向。默認為Noneinplace接收bool。表示是否在原表上進行操作。默認為Falselimit接收int。表示填補缺失值個數上限,超過則不進行填補。默認為Nonedowncast接收dict。表示轉換數據類型。默認為None刪除法簡單易行,但是會引起數據結構變動,樣本減少;替換法使用難度較低,但是會影響數據的標準差,導致信息量變動。線性插值是一種較為簡單的插值方法,它針對已知的值求出線性方程,通過求解線性方程得到缺失值。檢測與處理缺失值3.插值法多項式插值是利用已知的值擬合一個多項式,使得現有的數據滿足這個多項式,再利用這個多項式求解缺失值,常見的多項式插值又分有拉格朗日插值和牛頓插值等。樣條插值是以可變樣條來做出一條經過一系列點的光滑曲線的插值方法。插值樣條由一些多項式組成,每一個多項式都由相鄰兩個數據點決定,這樣可以保證兩個相鄰多項式及其導數在連接處連續。檢測與處理缺失值從擬合結果可以看出,在多項式插值和樣條插值兩種情況下的擬合都非常出色,線性插值法只在自變量和因變量為線性關系的情況下擬合才較為出色。在實際分析過程中,由于自變量與因變量的關系是線性的情況非常少見,所以在大多數情況下,多項式插值和樣條插值是較為合適的選擇。SciPy庫中的interpolate模塊除了提供常規的插值法外,還提供了如在圖形學領域具有重要作用的重心坐標插值(BarycentricInterpolator)等。在實際應用中,需要根據不同的場景選擇合適的插值方法。檢測與處理缺失值3σ原則又稱為拉依達準則,其原則就是先假設一組檢測數據只含有隨機誤差,對原始數據進行計算處理得到標準差,然后按一定的概率確定一個區間,認為數據超過這個區間就屬于異常。3σ原則僅適用于對正態或近似正態分布的樣本數據進行處理。正態分布數據的3σ原則如下表所示,其中σ代表標準差,μ代表均值。數據的數值分布幾乎全部集中在區間(μ
3σ,μ+3σ)內,超出這個范圍的數據僅占不到0.3%。故根據小概率原理,可以認為超出3σ的部分為異常數據。檢測與處理異常值1.3σ原則數值分布在數據中的占比(μ
σ,
σ)0.6827(μ
2σ,
2σ)0.9545(μ
3σ,
3σ)0.9973箱線圖提供了識別異常值的一個標準,即異常值通常被定義為小于QL-1.5IQR或大于QU+1.5IQR的值。QL稱為下四分位數,表示全部觀察值中有四分之一的數據取值比它小;QU稱為上四分位數,表示全部觀察值中有四分之一的數據取值比它大;IQR稱為四分位數間距,是上四分位數QU與下四分位數QL之差,其間包含了全部觀察值的一半。檢測與處理異常值2.
箱線圖分析箱線圖依據實際數據繪制,真實、直觀地表現出了數據分布的本來面貌,且沒有對數據做任何限制性要求,其判斷異常值的標準以四分位數和四分位數間距為基礎。四分位數給出了數據分布的中心、散布和形狀的某種指示,具有一定的魯棒性,即25%的數據可以變得任意遠,而不會很大地擾動四分位數,所以異常值通常不能對這個標準施加影響。鑒于此,箱線圖識別異常值的結果比較客觀,因此在識別異常值方面具有一定的優越性。檢測與處理異常值1清洗數據目錄合并數據2標準化數據3轉換數據4離差標準化是對原始數據的一種線性變換,結果是將原始數據的數值映射到[0,1]區間,轉換公式如下。其中,X表示原始數據值,
為原始數據的均值,為原始數據的標準差。離差標準化保留了原始數據值之間的聯系,是消除量綱和數據取值范圍影響較為簡單的方法。離差標準化前后的數據的整體分布情況并未發生改變,原先取值較大的數據,在做完離差標準化后的值依舊較大。離差標準化的缺點:若數值集中某個數值很大,則規范化后各其余值會接近于0,并且將會相差不大。離差標準化數據標準差標準化也叫零均值標準化或z分數標準化,是當前使用較為廣泛的數據標準化方法,經過該方法處理的數據均值為0,標準差為1,轉化公式如下式。其中,X表示原始數據值,為原始數據的均值,
為原始數據的標準差。標準差標準化后的值區間不局限于[0,1],并且存在負值。同時也不難發現,標準差標準化和離差標準化一樣不會改變數據的分布情況。標準差標準化數據通過移動數據的小數位數,將數據映射到區間[-1,1],移動的小數位數取決于數據絕對值的最大值,其轉化公式如下式。3種標準化方法各有其優勢。離差標準化方法簡單,便于理解,標準化后的數據限定在[0,1]區間內。標準差標準化受數據分布的影響較小。小數定標標準化方法的適用范圍廣,并且受數據分布的影響較小,相比較于前兩種方法,該方法適用程度適中。小數定標標準化數據1清洗數據目錄合并數據2標準化數據3轉換數據4在數據分析模型中有相當一部分的算法模型都要求輸入的特征為數值型特征,但在實際數據中,特征的類型不一定只有數值型,還會存在相當一部分的類別型。類別型特征需要經過啞變量處理后才可以放入模型之中。啞變量處理的示例如下圖。啞變量處理類別型數據在Python中可以利用pandas庫中的get_dummies函數對類別型特征進行啞變量處理,get_dummies函數的基本使用格式如下。get_dummies函數的常用參數及其說明如下。啞變量處理類別型數據pandas.get_dummies(data,prefix=None,prefix_sep='_',dummy_na=False,columns=None,sparse=False,drop_first=False,dtype=None)參數名稱參數說明data接收array、DataFrame或Series。表示需要啞變量處理的數據。無默認值prefix接收str、str的列表或str的dict。表示啞變量化后列名的前綴。默認為Noneprefix_sep接收str。表示前綴的連接符。默認為“_”get_dummies函數的常用參數及其說明(續表)。啞變量處理類別型數據參數名稱參數說明dummy_na接收bool。表示是否為NaN值添加一列。默認為Falsecolumns接收類似list的數據。表示DataFrame中需要編碼的列名。默認為Nonesparse接收bool。表示虛擬列是否是稀疏的。默認為Falsedrop_first接收bool。表示是否通過從k個分類級別中刪除第一級來獲得k
1個分類級別。默認為Falsedtype接收數據類型。表示處理后新列的數據類型。默認為None對于一個類別型特征,若其取值有m個,則經過啞變量處理后將變成了m個二元特征,并且這些特征互斥,每次只有一個激活,這使得數據變得稀疏。對類別型特征進行啞變量處理主要解決了部分算法模型無法處理類別型數據的問題,在一定程度上起到了擴充特征的作用。由于數據變成了稀疏矩陣的形式,因此也加快了算法模型的運算速度。啞變量處理類別型數據某些模型算法,特別是分類算法,如ID3決策樹算法和Apriori算法等,要求數據是離散的,此時就需要將連續型特征數據(數值型)變換成離散型特征數據(類別型),即連續特征離散化。連續特征的離散化就是在數據的取值范圍內設定若干個離散的劃分點,將取值范圍劃分為一些離散化的區間,最后用不同的符號或整數值代表落在每個子區間中的數據值。因此離散化涉及到兩個子任務,分別為確定分類數和如何將連續型數據映射到類別型數據上。連續特征離散化示例如圖。離散化連續型數據等寬法將數據的值域分成具有相同寬度的區間,區間的個數由數據本身的特點決定或由用戶指定,與制作頻率分布表類似。pandas提供了cut函數,可以進行連續型數據的等寬離散化,其基礎語法如下。cut函數的常用參數及其說明如下。離散化連續型數據1.等寬法pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3,include_lowest=False,duplicates='raise
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 通信行業的技術服務流程與實施措施
- 幼兒園教師語言藝術培養計劃
- 旅游行業隊伍專項教育整改心得體會
- 急性上消化道出血搶救流程的臨床路徑
- 制造業生產計劃及執行保障措施
- 醫療機構垃圾分類運營方案及保護措施
- 部編人教版一年級數學學習興趣培養計劃
- 2025年小學語文閱讀推廣總結范文
- 醫學遺傳情景劇創作與解析
- 紀錄片《為了和平》給我的人生啟示
- 針灸科出科個人小結
- 語感與語言習得-【中職專用】高一語文同步課件(高教版2023·基礎模塊上冊)
- 2024年中國石化集團資本有限公司招聘筆試參考題庫含答案解析
- 普通高中地理課程標準(2023年版)
- 檢驗批劃分方案14
- 《公共管理學》期末考試復習題庫(含答案)
- 公司實際控股人協議書
- 機械制圖習題集第九章《裝配圖》匯編
- 天師大和韓國世翰大學研究生入學英語試題
- 土建生態環保和綠色施工環境管理培訓ppt
- GB/T 27930-2023非車載傳導式充電機與電動汽車之間的數字通信協議
評論
0/150
提交評論