Python數據分析2------數據探索


一、數據探索

數據探索的目的:及早發現數據的一些簡單規律或特征

數據清洗的目的:留下可靠數據,避免臟數據的干擾。

兩者沒有嚴格的先后順序,經常在一個階段進行。

分為:

(1)數據質量分析(跟數據清洗密切聯系):缺失值分析、異常值分析、一致性分析、重復數據或含有特殊符號的數據分析

(2)數據特征分析(分布、對比、周期性、相關性、常見統計量等):

二、數據探索操作

  • 查看數據前5行:dataframe.head()
 
  • #查看數據的信息,包括每個字段的名稱、非空數量、字段的數據類型   : data.info()

 

  • #用統計學指標快速描述數據的概要: data.describe()

 

  • #查看dataframe的大小:dataframe.shape

 

三、缺失值分析

(通過describe與len直接發現,通過0數據發現)

(1)缺失值發現:

  比方說一個dataframe:dataframe.describe()得到count結果與len(dataframe[某個屬性])對比,若少則表明有缺失值。

  若一個dataframe中的0數據過多且不合理,則表明這個屬性也存在缺失值。

  操作:

  • dataframe.isnull()      #元素級別的判斷,把對應的所有元素的位置都列出來,元素為空或者NA就顯示True,否則就是False

  • dataframe.isnull().any()   #列級別的判斷,只要該列有為空或者NA的元素,就為True,否則False

  • missing = dataframe.columns [ dataframe.isnull().any() ].tolist()      #將為空或者NA的列找出來
  •  dataframe [ missing ].isnull().sum()                #將列中為空或者NA的個數統計出來

  • # 缺失值比例  len(data["Age"] [ pda.isnull(data["Age"]) ]) / len(data))

(2)缺失值處理方式:(刪除、插補、不處理)

  •   缺失值少:插補(均值插補、中位數插補、眾數插補、固定值插補、最近數據插補、回歸插補、拉格朗日插值、牛頓插值法、分段插值、用預測值填充 等)
  •   缺失值多:不處理,不使用該類型數據
  •   缺失值適中:將缺失當做新的一類,如one-hot來處理

   操作:

  插補:

  • dataframe.loc [ dataframe [ column ] .isnull() , column ] = value   將某一列column中缺失元素的值,用value值進行填充。
  • data.Age.fillna(data.Age.mean(),inplace=True)  將age列缺失值填充均值
  • dataframe [age] [ dataframe.age.isnull() ] = dataframe.age.dropna().mode().values    #眾數填補 , mode()函數就是取出現次數最多的元素。
  • dataframe ['age'].fillna(method='pad')                           #使用前一個數值替代空值或者NA,就是NA前面最近的非空數值替換    
  • dataframe ['age'].fillna(method='bfill',limit=1) #使用后一個數值替代空值或者NA,limit=1就是限制如果幾個連續的空值,只能最近的一個空值可以被填充。
  • df.interpolate():對於時間序列的缺失,可以使用這種方法。
  • import lightgbm as lgb :采用lgb來預測缺失值填補

  刪除:

  • new_drop = dataframe.dropna ( axis=0,subset=["Age","Sex"] ) 【在子集中有缺失值,按行刪除】
  • new_drop = dataframe.dropna ( axis=1)  【將dataframe中含有缺失值的所有列刪除】

 

(2)異常值發現:(通過散點圖和箱型圖發現)

異常值發現:

  先畫數據的散點圖。觀察偏差過大的數據,判斷其是否為異常值。

  或者畫箱型圖箱型圖識別異常值比較客觀,因為它是根據3σ原則,如果數據服從正態分布,若超過平均值的3倍標准差的值被視為異常值。

異常值處理方式:視為缺失值、刪除、修補(平均數、中位數等)、不處理。

  中位數比平均值插值好一點,因為受異常值影響較小。

4、數據特征分析:

分布分析:(畫直方圖)

  先確定極差(max-min)、組數、組距,然后根據這三個來畫直方圖(hist函數)。

  可以大范圍查看數據,也可以縮小范圍進行分析,這需要具體數據具體分析。

  通常數據有很多屬性,可以將屬性兩兩畫直方圖,通過直方圖來分析數據符合什么分布,比如正態分布,線性分布等。如果使用上所有的數據范圍過大,分布過於集中不明顯,可以將其集中的數據縮小到一個小范圍中再畫直方圖進行分析。

 

 

 

小例子:將data中price列數據值為0的變為缺失值,然后再給其賦值為中位數,假設中位數為36

import pandas as pd

data['price'][(data['price']==0)]=None
for i in data.columns:
    for j in data.index:
        if (data[i].isnull())[j]:
            data[i][j]='36'

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM