欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python常用的數(shù)據(jù)清洗方法詳解

 更新時(shí)間:2023年07月10日 10:26:11   作者:CooL截?fù)? 
這篇文章主要介紹了Python常用的數(shù)據(jù)清洗方法,在數(shù)據(jù)處理的過(guò)程中,一般都需要進(jìn)行數(shù)據(jù)的清洗工作,如數(shù)據(jù)集是否存在重復(fù)、是否存在缺失、數(shù)據(jù)是否具有完整性和一致性、數(shù)據(jù)中是否存在異常值等,需要的朋友可以參考下

Python常用的數(shù)據(jù)清洗方法

在數(shù)據(jù)處理的過(guò)程中,一般都需要進(jìn)行數(shù)據(jù)的清洗工作,如數(shù)據(jù)集是否存在重復(fù)、是否存在缺失、數(shù)據(jù)是否具有完整性和一致性、數(shù)據(jù)中是否存在異常值等。當(dāng)發(fā)現(xiàn)數(shù)據(jù)中存在如上可能的問(wèn)題時(shí),都需要有針對(duì)性地處理,本文介紹如何識(shí)別和處理重復(fù)觀測(cè)、缺失值和異常值。

重復(fù)觀測(cè)處理

重復(fù)觀測(cè)是指觀測(cè)行存在重復(fù)的現(xiàn)象,重復(fù)觀測(cè)的存在會(huì)影響數(shù)據(jù)分析和挖掘結(jié)果的準(zhǔn)確性,所以在數(shù)學(xué)分析和建模之前,需要進(jìn)行觀測(cè)的重復(fù)性檢驗(yàn),如果存在重復(fù)觀測(cè),還需要進(jìn)行重復(fù)項(xiàng)的刪除。

在這里插入圖片描述

檢測(cè)數(shù)據(jù)集的是否重復(fù),pandas 使用duplicated方法,該方法返回的是數(shù)據(jù)行每一行的檢驗(yàn)結(jié)果,即每一行返回一個(gè)bool值,再使用drop_duplicates方法移除重復(fù)值。

import pandas as pd
dataset= pd.read_csv("red_wine_repetition.csv")
print("是否存在重復(fù)值:",any(dataset.duplicated()))     #輸出:True
dataset.drop_duplicates(inplace=True)
dataset.to_csv('red_wine_repetition2.csv',index=False)   #保存移除重復(fù)值后的數(shù)據(jù)集

缺失值處理

數(shù)據(jù)缺失在大部分?jǐn)?shù)據(jù)分析應(yīng)用中都很常見(jiàn),pandas使用浮點(diǎn)值NaN表示浮點(diǎn)或非浮點(diǎn)數(shù)組中的缺失數(shù)據(jù),python內(nèi)置的None值也會(huì)被當(dāng)做缺失值處理。
pandas使用isnull方法檢測(cè)是否為缺失值,檢測(cè)對(duì)象的每個(gè)元素返回一個(gè)bool值

from numpy import NaN
from pandas import Series
data=Series([5, None, 15, NaN, 25])
print(data.isnull())    #輸出每個(gè)元素的檢測(cè)結(jié)果
print('是否存在缺失值:',any(data.isnull()))  #輸出 :True

缺失值的處理可以采用三種方法:過(guò)濾法、填充法和插值法。過(guò)濾法又稱刪除法,是指當(dāng)缺失的觀測(cè)比例非常低時(shí)(如5%以內(nèi)),直接刪除存在缺失的觀測(cè);或者當(dāng)某變量缺失的觀測(cè)比例非常高時(shí)(如85%以上),直接刪除這些缺失的變量。填充法又稱替換法,是指用某種常數(shù)直接替換那些缺失值,例如:對(duì)于連續(xù)值變量采用均值或中位數(shù)替換,對(duì)于離散值變量采用眾數(shù)替換。插值法是指根據(jù)其他非缺失的變量或觀測(cè)來(lái)預(yù)測(cè)缺失值,常見(jiàn)的插值法有線性插值法、KNN插值法和Lagrange插值法等。

在這里插入圖片描述

數(shù)據(jù)過(guò)濾

數(shù)據(jù)過(guò)濾dropna 語(yǔ)法格式如下:dropna(axis=0, how='any', thresh=None)
(1)axis=0 表示刪除行變量;axis=1 表示刪除列變量
(2)how 參數(shù)可選值為any或all ,all表刪除全為 NaN的行
(3)thresh 為整數(shù)類型,表示刪除的條件

import pandas as pd
dataset= pd.read_csv("red_wine_deficiency.csv")
data1=dataset.dropna()  #刪除所有的缺失值
data2=dataset.dropna(axis=1, thresh=9)  #刪除有效屬性小于9的列
data3=dataset.drop("free sulfur dioxide", axis=1)   #刪除free sulfur dioxide的數(shù)據(jù)
print(data1,'\n---------------\n',data2,'\n---------------\n',data3)

數(shù)據(jù)填充

當(dāng)數(shù)據(jù)中出現(xiàn)缺失值時(shí),可以用其他的數(shù)值進(jìn)行填充,常用的方法是fillna,其語(yǔ)法格式為:fillna(value=None, method=None, axis=None,inplace=Flase)
其中value值除了基本類型外,還可以使用字典,實(shí)現(xiàn)對(duì)不同的列填充不同的值,method 表示采用填充數(shù)據(jù)的方法,常用“ffill”、“bfill”。

import pandas as pd
dataset= pd.read_csv("red_wine_deficiency.csv")
data1=dataset.fillna(0)    #用0填補(bǔ)所有的缺失值
data2=dataset.fillna(method='ffill')      #用前一行的值填補(bǔ)缺失值
data3=dataset.fillna(method='bfill')      #用后一行的值填補(bǔ)缺失值,最后一行缺失不處理
data4=dataset.fillna(value={'pH':dataset.pH.mode()[0],           #使用眾數(shù)填補(bǔ)
                            'density':dataset.density.mean(),    #使用均值填補(bǔ)
                            'alcohol':dataset.alcohol.median()}) #使用中位數(shù)填補(bǔ)
print(data1,'\n-----\n',data2,'\n-----\n',data3,'\n-----\n',data4)

插值法

當(dāng)出現(xiàn)缺失值時(shí),也可以使用插值法來(lái)對(duì)缺失值進(jìn)行插補(bǔ),常見(jiàn)的方法為:'linear','nearest','zero','slinear','quadratic','cubic','spline','barycentric','polynomial'.

import pandas as pd
dataset= pd.read_csv("red_wine_deficiency.csv")
data=dataset.fillna(value={'pH':dataset.pH.mode()[0],           #使用眾數(shù)填補(bǔ)
                            'density':dataset.density.interpolate(method='polynomial',order=2),
                            #使用二項(xiàng)式插值填補(bǔ)
                            'alcohol':dataset.alcohol.interpolate()})  #使用線性插值填補(bǔ)
print(data)

異常值處理

異常值是指那些遠(yuǎn)離正常值的觀測(cè)值,異常值的出現(xiàn)會(huì)給模型的常見(jiàn)和預(yù)測(cè)產(chǎn)生嚴(yán)重的后果,但有時(shí)也會(huì)利用異常值進(jìn)行異常數(shù)據(jù)查找。
對(duì)于異常值的檢測(cè),一般采用兩種方法,一種是標(biāo)準(zhǔn)差法,另一種是箱線圖判別法。標(biāo)準(zhǔn)差法的判別公式是outlier > x+nδ 或者outlier < x-nδ,其中x為樣本均值,δ為樣本標(biāo)準(zhǔn)差。當(dāng)n=2時(shí),滿足條件的觀測(cè)就是異常值;當(dāng)n=3時(shí),滿足條件的觀測(cè)就是極端異常值。箱線圖的判別公式是outlier > Q3+nIQR 或者outlier < Q1-nIQR,其中Q1為下四分位數(shù),Q3為上四分位數(shù),IQR為上四分位數(shù)和下四分位數(shù)的差,當(dāng)n=1.5時(shí),滿足條件的觀測(cè)為異常值,當(dāng)n=3時(shí),滿足條件的觀測(cè)為極端異常值。
這兩種方法的選擇標(biāo)準(zhǔn)如下,如果數(shù)據(jù)近似服從正態(tài)分布,因?yàn)閿?shù)據(jù)的分布相對(duì)比較對(duì)稱,優(yōu)先選擇標(biāo)準(zhǔn)差法。否則優(yōu)先選擇箱線圖法,因?yàn)榉治粩?shù)并不會(huì)受到極端值的影響。當(dāng)數(shù)據(jù)存在異常時(shí),若異常觀測(cè)的比例不太大,一般可以使用刪除法將異常值刪除,也可以使用替換法,可以考慮使用低于判別上限的最大值替換上端異常值、高于判別下限的最小值替換下端異常值,或者使用均值、中位數(shù)替換

在這里插入圖片描述

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
dataset= pd.read_csv("red_wine_abnormal.csv")
dataset=dataset['fixed acidity']
mu=dataset.mean()      #計(jì)算平均值
δ=dataset.std()      #計(jì)算標(biāo)準(zhǔn)差
print('標(biāo)準(zhǔn)差法異常值上限檢測(cè):',any(dataset > mu+2*δ))    #輸出:True
print('標(biāo)準(zhǔn)差法異常值下限檢測(cè):',any(dataset < mu-2*δ))    #輸出:True
Q1=dataset.quantile(0.25)    #計(jì)算下四分位數(shù)
Q3=dataset.quantile(0.75)    #計(jì)算上四分位數(shù)
IQR=Q3-Q1
print('箱線圖法異常值上限檢測(cè):',any(dataset > Q3+1.5*IQR))  #輸出:True
print('箱線圖法異常值下限檢測(cè):',any(dataset < Q1-1.5*IQR))  #輸出:True
plt.style.use('ggplot')
dataset.plot(kind='hist',bins=30,density=True)  
dataset.plot(kind='kde')
plt.show()
#替換異常值
UB=Q3+1.5*IQR
st=dataset[dataset < UB].max()    #找出低于判斷上限的最大值
dataset.loc[dataset >UB] = st
plt.style.use('ggplot')
dataset.plot(kind='hist',bins=30,density=True)  
dataset.plot(kind='kde')
plt.show()

運(yùn)行不同dataset 得到的圖像

(1)異常值處理前

在這里插入圖片描述

(2)替換異常值后

在這里插入圖片描述

到此這篇關(guān)于Python常用的數(shù)據(jù)清洗方法詳解的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)清洗方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python編寫屏幕截圖程序方法

    Python編寫屏幕截圖程序方法

    這篇文章主要介紹了Python編寫屏幕截圖程序方法,本文講解使用開(kāi)源程序pywin32實(shí)現(xiàn)屏幕截圖和讀取剪切板功能,需要的朋友可以參考下
    2015-02-02
  • 關(guān)于python常見(jiàn)異常以及處理方法

    關(guān)于python常見(jiàn)異常以及處理方法

    這篇文章主要介紹了關(guān)于python常見(jiàn)異常以及處理方法,python用異常對(duì)象(exception object)來(lái)表示異常情況。遇到錯(cuò)誤后,會(huì)引發(fā)異常,需要的朋友可以參考下
    2023-04-04
  • 人工智能學(xué)習(xí)Pytorch張量數(shù)據(jù)類型示例詳解

    人工智能學(xué)習(xí)Pytorch張量數(shù)據(jù)類型示例詳解

    這篇文章主要為大家介紹了人工智能學(xué)習(xí)Pytorch張量數(shù)據(jù)類型的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • Python依賴庫(kù)的幾種離線安裝方法總結(jié)

    Python依賴庫(kù)的幾種離線安裝方法總結(jié)

    這篇文章主要介紹了如何在Python中使用pip工具進(jìn)行依賴庫(kù)的安裝和管理,包括如何導(dǎo)出和導(dǎo)入依賴包列表、如何下載和安裝單個(gè)或多個(gè)庫(kù)包及其依賴,以及如何指定不同的Python源進(jìn)行安裝,需要的朋友可以參考下
    2025-03-03
  • Python?使用BeautifulSoup庫(kù)的方法

    Python?使用BeautifulSoup庫(kù)的方法

    BeautifulSoup庫(kù)用于從HTML或XML文件中提取數(shù)據(jù),它可以自動(dòng)將復(fù)雜的HTML文檔轉(zhuǎn)換為樹(shù)形結(jié)構(gòu),并提供簡(jiǎn)單的方法來(lái)搜索文檔中的節(jié)點(diǎn),使得我們可以輕松地遍歷和修改HTML文檔的內(nèi)容,本文給大家介紹Python?使用BeautifulSoup庫(kù)的方法,感興趣的朋友一起看看吧
    2023-10-10
  • python numpy矩陣信息說(shuō)明,shape,size,dtype

    python numpy矩陣信息說(shuō)明,shape,size,dtype

    這篇文章主要介紹了python numpy矩陣信息說(shuō)明,shape,size,dtype,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • 詳解python的xlwings庫(kù)讀寫excel操作總結(jié)

    詳解python的xlwings庫(kù)讀寫excel操作總結(jié)

    這篇文章主要介紹了詳解python的xlwings庫(kù)讀寫excel操作總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • python基于xml parse實(shí)現(xiàn)解析cdatasection數(shù)據(jù)

    python基于xml parse實(shí)現(xiàn)解析cdatasection數(shù)據(jù)

    這篇文章主要介紹了python基于xml parse實(shí)現(xiàn)解析cdatasection數(shù)據(jù)的方法,是非常實(shí)用技巧,需要的朋友可以參考下
    2014-09-09
  • python辦公之python編輯word

    python辦公之python編輯word

    這篇文章主要介紹了python辦公之python編輯word,文章我們以python操作word為例來(lái)介紹一些簡(jiǎn)單的操作,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • PyTorch一小時(shí)掌握之圖像識(shí)別實(shí)戰(zhàn)篇

    PyTorch一小時(shí)掌握之圖像識(shí)別實(shí)戰(zhàn)篇

    這篇文章主要介紹了PyTorch一小時(shí)掌握之圖像識(shí)別實(shí)戰(zhàn)篇,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09

最新評(píng)論