第6章 數據處理與數據分析_第1頁
第6章 數據處理與數據分析_第2頁
第6章 數據處理與數據分析_第3頁
第6章 數據處理與數據分析_第4頁
第6章 數據處理與數據分析_第5頁
已閱讀5頁,還剩38頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第6章數據處理與數據分析

本章內容6.1數據處理概念6.2Pandas數據清理6.3Pandas數據集成6.4Pandas數據變換與離散化6.5Pandas數據分析6.1數據處理概念現實世界的數據庫極易受噪聲、缺失值和不一致數據的侵擾。為了滿足應用要求,得到高質量的數據,提高數據的準確性、完整性、一致性、時效性和可信性,需要對數據進行相應的處理,包括數據清理、數據集成、數據變換與數據離散化等步驟。數據清理主要清除數據中的噪聲,糾正不一致。數據集成將數據由多個數據源進行合并。數據變換(例如規范化)可以用來把數據壓縮到較小的區間,如0到1之間。6.1數據處理概念6.1.1數據清理現實世界的數據一般是不完整的、有噪聲的和不一致的。數據清理試圖填充缺失的值,光滑噪聲和識別或刪除離群點,并糾正數據中的不一致來“清理”數據。1.缺失值處理缺失值的可用處理方法有以下幾種:(1)刪除記錄。(2)人工填寫缺失值。(3)使用一個全局常量填充缺失值。(4)使用屬性的中心度量(如均值或中位數)填充缺失值。(5)使用與屬性缺失的記錄屬同一類的所有樣本的屬性均值或中位數。(6)使用最可能的值填充缺失值。6.1.1數據清理2.噪聲數據與離群點噪聲是被測量變量的隨機誤差(一般指錯誤的數據)。離群點是數據集中包含一些數據對象,他們與數據的一般行為或模型不一致(正常值,但偏離大多數數據)。圖6-1系統用戶年齡的分析6.1.1數據清理2.噪聲數據與離群點給定一個數值屬性,可以采用下面的數據光滑技術“光滑”數據,去掉噪聲。(1)分箱分箱方法通過考察數據的“近鄰”(即周圍的值)來光滑有序數據值。用箱均值光滑:箱中每一個值被箱中的平均值替換。用箱邊界光滑:箱中的最大值和最小值同樣被視為邊界。箱中的每一個值被最近的邊界值替換。用箱中位數光滑:箱中的每一個值被箱中的中位數替換。

箱均值光滑

箱邊界光滑

箱中位數光滑6.1.1數據清理2.噪聲數據與離群點(2)回歸回歸(regression)用一個函數擬合數據來光滑數據。線性回歸涉及找出擬合兩個屬性(或變量)的“最佳”直線,使得一個屬性能夠預測另一個。離群點分析可以通過如聚類來檢測離群點。聚類將類似的值組織成群或“簇”。直觀地,落在簇集合之外的值被視為離群點。圖6-3線性回歸擬合圖6-4聚類出3個數據簇6.1.1數據清理3.不一致數據對于有些事務,所記錄的數據可能存在不一致。有些數據不一致可以根據其他材料上信息人工地加以更正,也可以用糾正不一致數據的程序工具來檢測違反限制的數據。例如,知道屬性間的函數依賴,可以查找違反函數依賴的值。6.1.2數據集成在實際應用中,經常會遇到來自不同數據源的同類數據,且在用于分析之前需要進行合并操作。實施這種合并操作的步驟稱數據集成。有效的數據集成過程有助于減少合并后的數據沖突,降低數據冗余程度等。數據集成需要解決的問題有:(1)屬性匹配確定不同數據源中數據屬性間的對應關系。例如,對用戶id的表達形式,銷售商A使用字符串類型“customer_id”;銷售商B使用整數類型“customer_id_number”,在進行集成之前,需要先對不同的表達方式進行識別和對應。(2)冗余去除數據集成后產生的冗余包括兩方面:數據記錄的冗余,因數據屬性間的推導關系而造成數據屬性冗余。(3)數據沖突檢測與處理來自不同數據源的數據記錄在集成時因某種屬性或約束上的沖突,導致集成過程無法進行。6.1.3數據變換與數據離散化1.數據變換策略概述(1)光滑:去掉數據中的噪音。這種技術包括分箱、聚類和回歸。(2)屬性構造(或特征構造):可以由給定的屬性構造新的屬性并添加到屬性集中,以幫助挖掘過程。(3)聚集:對數據進行匯總和聚集。例如,可以聚集日銷售數據,計算月和年銷售量。通常這一步用來為多個抽象層的數據分析構造數據立方體。(4)規范化:把屬性數據按比例縮放,使之落入一個特定的小區間,如-1.0到1.0或0.0到1.0。(5)離散化:數值屬性(例如,年齡)的原始值用區間標簽(例如0到10,11到20等)或概念標簽(例如,youth,adult,senior)替換。這些標簽可以遞歸地組織成更高層概念,導致數值屬性的概念分層。(6)由標稱數據產生概念分層:屬性如street,可以泛化到較高的概念層,如city或country。6.1.3數據變換與數據離散化2.通過規范化變換數據令A是數值屬性,具有n個值v1,v2,…,vn。(1)最小-最大規范化是對原始數據進行線性變換。假定maxA和minA分別為屬性A的最大和最小值,把A的值vi映射到區間[new_minA,new_maxA]中的vi'。最小-最大規范化通過計算公式:(2)z-score規范化(或零-均值規范化),基于A的平均值和標準差規范化。A的值vi被規范化為vi',由下式計算,其中avgA和δA分別為屬性A的平均值和標準差。6.1.3數據變換與數據離散化3.通過分箱離散化分箱是一種基于指定的箱個數的自頂向下的分裂技術。分箱并不使用分類信息,是一種非監督的離散化技術。它對用戶指定的箱個數很敏感,也容易受離群點的影響。4.通過直方圖分析離散化直方圖分析也是一種非監督離散化技術,它也不使用分類信息。直方圖把屬性A的值劃分成不相交的區間,稱作桶或箱。桶安放在水平軸上,而桶的高度(和面積)是該桶所代表值的出現頻率。5.通過聚類、決策樹離散化聚類通過將屬性A的值劃分成簇或組,主要考慮A的分布以及數據點的鄰近性。為分類生成決策樹的技術可以用來離散化。主要思想是選擇劃分點使得一個給定的結果分區包含盡可能多的同類記錄。6.2Pandas數據清理Pandas數據清理包括處理缺失數據以及清除無意義的數據,如刪除原始數據集中的無關數據、重復數據,平滑噪聲數據,處理異常值。6.2.1處理缺失值1.查找數據中的缺失值表6-1成績單score.xlsx學號姓名班級出生日期年齡高數英語計算機總分等級50101田晴計算機0512001-08-19

867187

50102楊慶紅計算機0512002-10-08

617570

50201王海茹計算機0522004-12-16

作弊8881

50202陳曉英計算機0522003-06-25

65缺考66

50103李秋蘭計算機0512001-07-06

907893

50104周磊計算機0512002-05-10

566886

50203吳濤計算機0522001-08-18

878182

50204趙文敏計算機0522002-09-17

809391

6.2.1處理缺失值1.查找數據中的缺失值缺失值True:缺失數據False:有數據默認查看5行isna()方法查找DataFrame對象或Series對象中的缺失值6.2.1處理缺失值2.刪除數據中的缺失值DataFrame.dropna(axis=0,how='any',subset=None,inplace=False)參數說明:axis:默認為0,表示逢空值刪除整行,axis=1表示逢空值去掉整列。how:默認為'any',如果一行(或一列)里任何一個數據出現NaN就去掉整行(整列);如果設置how='all',一行(或一列)都是NaN才刪掉整行(整列)。subset:設置要檢查缺失值的列。如果是多個列,可以使用列名的列表list作為參數。inplace:默認False,dropna()方法返回一個新的DataFrame,不會修改源數據。如果參數為True,修改源數據DataFrame。例如:df.dropna(subset=['總分','等級'])#刪除df中'總分'和'等級'2列數據有缺失的行6.2.1處理缺失值3.填充數據中的缺失值(1)固定值填充df.fillna(value=None,method=None,axis=None,inplace=False,**kwargs)主要參數說明:value:填充的值,可以是一個常量或者字典等。如果是字典則可以指定某些列填充的具體值。method:填充的方法,backfill和bfill代表用缺失值后一個數據值替代NaN,ffill和pad代表用缺失值前一個數據值替代NaN。例如:df.fillna(value='?')#或者df.fillna('?')6.2.1處理缺失值3.填充數據中的缺失值(1)固定值填充(2)臨近值填充6.2.1處理缺失值3.填充數據中的缺失值(3)描述性統計量填充6.2.2處理重復值1.查找重復值使用df.duplicated()方法會返回一個Series對象,找出所有重復值。重復為True,不重復為False。6.2.2處理重復值2.刪除重復值使用df.drop_duplicates()方法直接刪除DataFrame對象中重復出現的整行數據。6.2.3處理格式錯誤以下實例格式化日期數據。to_datetime函數將多種日期形式轉換為標準日期格式6.2.4處理錯誤數據

以下實例會替換錯誤年齡的數據。

設置條件語句,將age大于120的設置為120。

將錯誤數據的行刪除。將age大于120的行刪除。6.2.5處理異常值異常值是指數據中個別數值明顯偏離其余數值的數據,也稱為離群點。檢測異常值就是監測數據中是否有錄入錯誤以及是否有不合理的數據。3σ原則[拉依達準則]該法則是假設一組檢驗數據只有隨機誤差,對原始數據進行計算處理得到標準差,按照一定的概率確定一個區間,認為誤差超過這個區間就屬于異常值。3σ原則僅適用于服從正態分布或者近似正態分布的數據。μ-3σ<x<μ+3σ,為正常區間的數據,此區間的概率值為0.9973。以下例子使用Z-score標準化法后得到的數據值超過閾值標為異常。6.3Pandas數據集成6.3.1SQL合并/連接Pandas提供了一個merge()函數,實現DataFrame對象之間所有標準數據庫連接操作。merge(left,right,how='inner',on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=True)主要參數含義如下:left——左DataFrame對象。right——右DataFrame對象。on——列(名稱)連接,必須在左和右DataFrame對象中存在。how——它是left,right,outer以及inner之中的一個,默認為inner。6.3.1SQL合并/連接(1)'id'列用作鍵合并兩個數據框。(2)多列用作鍵合并兩個數據框。6.3.1SQL合并/連接(3)使用“how”參數合并兩個數據框。left連接:rs=pd.merge(left,right,on='subject_id',how='left')left連接right連接outer連接inner連接默認inner連接6.3.2字段合并字段合并是指將同一個數據框中的不同列進行合并,形成新的列。X=x1+x2+…x1:數據列1,x2:數據列2。返回值:數據框。注意:如果某一列是非str類型的數據,需要用map(str)或者astype(str)將那一列數據類型做轉換。6.3.3記錄合并記錄合并是指兩個數據框合并成一個數據框,也就是在一個數據框中追加另一個數據框的數據記錄。1.concatpd.concat(objs,axis=0,join='outer',ignore_index=False,keys=None,...])objs:需要連接的對象,[dataFrame1,dataFrame2,...],需要將合并的數據框用列表表示。axis:axis=0表示拼接方式是上下堆疊,當axis=1表示左右拼接。join:控制外連接還是內連接,join='outer'表示外連接,保留兩個數據框表中的所有信息;join="inner"表示內連接,拼接結果只保留兩個數據框表共有的信息。keys:可以給每個需要合并的dataFrame數據框一個標簽。6.3.3記錄合并1.concat(1)相同字段的數據框表首尾相接(即上下方向)默認axis=0,上下拼接6.3.3記錄合并1.concat(2)橫向拼接(即左右方向)axis=1,左右拼接默認join='outer'外連接axis=1,左右拼接join='inner'內連接6.3.3記錄合并2.appendappend主要用于追加數據,格式如下:df.append(other,ignore_index:'bool'=False,verify_integrity:'bool'=False,sort:'bool'=False)主要參數含義如下:other:用于追加的數據,可以是DataFrame或Series或列表。ignore_index:是否保留原有的索引。6.3.3記錄合并2.append(1)append追加數據框(2)將Series和字典數據作為DataFrame的新一行插入6.4Pandas數據變換與離散化6.4.1簡單函數變換對數據開方、平方、取對數、倒數、差分、指數等,為后續分析提供想要的數據和方便分析。由于“累計評價”的值太大,新增一列對“累計評價”取對數處理;同時插入一列,計算“優惠力度”。6.4.2數據標準化數據標準化實際是將數據按比例縮放,使之落入到特定區間,一般我們使用0-1標準化。數據標準化是為了消除數據的量綱影響,為后續許多算法分析提供必要條件。1.Min-Max標準化Min-Max標準化就是最小-最大規范化,又稱離差標準化,對原始數據的線性變換,使結果映射到區間[0,1]且無量綱。計算公式:X*=(x-min)/(max-min)6.4.2數據標準化2.Z-score標準化法Z-score標準化根據原始數據的均值(Mean)和標準差(StandardDeviation),進行數據的標準。經過處理的數據符合標準正態分布,即均值為0,標準差為1。Z-score標準化公式為:X*=(x-u)/σ

其中u表示所有樣本數據的均值,σ表示所有樣本數據的標準差。6.4.3數據離散化處理連續值經常需要離散化或者分箱,方便數據的展示和理解,以及結果的可視化。等距分箱等頻分箱(分位數分箱)6.5Pandas數據分析6.5.1描述性分析1.集中趨勢表示數據集中趨勢的指標有:平均值、中位數、眾數、第一四分位數和第三四分位數。6.5.1描述性分析2.離散程度表示數據離散程度的有:方差,標準差,極差,四分位間距。6.5.1描述性分析3.分布形態峰度:是描述某變量所有取值分布形態陡緩程度的統計量,簡單來說就是數據分布頂的尖銳程度。峰度>0峰度=0峰度<0偏度:統計數據分布偏斜方向和程度的度量,通過對偏度系數的測量,判定數據分布的不對稱程度以及方向。skew():數據分布的偏度kurt():數據分布的峰度6.5.2分布分析分布分析法又稱直方圖法。將搜集到的數據進行分組整理,繪制成頻數分布直方圖,用以描述分布狀態的一種分析方法。例如日常成績分析中,統計各分數段人數(不及格人數,60~80,80~90,90分以上人數)了解學生學習情況,就是分布分析。分布分析應用場景:發現用戶分布規律,優化產品和運營策略。鎖定核心用戶群,實施精細化運營。去除極值影響,數據更接近整體真實表現。分布分析一般按照以下步驟執行:(1)找到數據中的最大值和最小值。(2)決定組距與組數。(3)決定分點

溫馨提示

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

評論

0/150

提交評論