Python中處理無效數(shù)據(jù)的詳細(xì)教程
1.無效數(shù)據(jù)的概念
無效數(shù)據(jù)是指不符合數(shù)據(jù)收集目的或數(shù)據(jù)收集標(biāo)準(zhǔn)的數(shù)據(jù)。這些數(shù)據(jù)可能來自于不準(zhǔn)確的測量、缺失值、錯(cuò)誤標(biāo)注、虛假的數(shù)據(jù)源或其他問題。無效數(shù)據(jù)可能會對數(shù)據(jù)分析結(jié)果產(chǎn)生誤導(dǎo),因此需要在數(shù)據(jù)分析之前進(jìn)行過濾和處理。
無效數(shù)據(jù)的類型包括但不限于以下幾種:
- 缺失值:缺失值是指在數(shù)據(jù)集中沒有收集到足夠的信息來完全確定其值的數(shù)據(jù)點(diǎn)。缺失值可以是由于數(shù)據(jù)收集過程中的誤差、數(shù)據(jù)源的不確定性、數(shù)據(jù)點(diǎn)之間的相互作用等原因產(chǎn)生的。在數(shù)據(jù)分析中,缺失值可能會對數(shù)據(jù)集的質(zhì)量和模型的準(zhǔn)確性產(chǎn)生負(fù)面影響。
- 重復(fù)值:重復(fù)值是指在數(shù)據(jù)集中重復(fù)出現(xiàn)的數(shù)據(jù)點(diǎn)。在數(shù)據(jù)集中,每個(gè)數(shù)據(jù)點(diǎn)都應(yīng)該是唯一的,即不存在兩個(gè)相同的數(shù)據(jù)點(diǎn)。重復(fù)值可能會對數(shù)據(jù)分析和建模產(chǎn)生負(fù)面影響,因?yàn)樗鼈兛赡軙谏w數(shù)據(jù)集中的重要信息。
- 異常值:異常值是指在數(shù)據(jù)集中偏離平均值或常見值的數(shù)據(jù)點(diǎn)。異常值可以是由于數(shù)據(jù)收集過程中的誤差、數(shù)據(jù)源的不確定性、數(shù)據(jù)點(diǎn)之間的相互作用等原因產(chǎn)生的。異常值可能會對數(shù)據(jù)分析和建模產(chǎn)生負(fù)面影響,因?yàn)樗鼈兛赡軙谏w數(shù)據(jù)集中的重要信息,或者導(dǎo)致模型產(chǎn)生錯(cuò)誤的結(jié)論。
2.無效數(shù)據(jù)的處理方法
2.1缺失值處理
缺失值處理是指在數(shù)據(jù)分析過程中,針對數(shù)據(jù)集中存在缺失值的數(shù)據(jù)點(diǎn)進(jìn)行的處理和重新處理。缺失值處理的目的是消除缺失值對數(shù)據(jù)集的影響,提高數(shù)據(jù)集的質(zhì)量和模型的準(zhǔn)確性。
缺失值處理的方法包括以下幾種:
- 填充均值:將缺失值填充為數(shù)據(jù)集中該值所在列的均值。
- 填充中位數(shù):將缺失值填充為數(shù)據(jù)集中該值所在列的中位數(shù)。
- 填充最大最小值:將缺失值填充為數(shù)據(jù)集中該值所在列的最大最小值。
- 使用其他數(shù)據(jù)點(diǎn)的信息填充缺失值:根據(jù)數(shù)據(jù)集中的其他數(shù)據(jù)點(diǎn)的信息,使用統(tǒng)計(jì)方法或其他算法來填充缺失值。
- 刪除缺失值:將缺失值所在的數(shù)據(jù)點(diǎn)從數(shù)據(jù)集中刪除。
在處理缺失值時(shí),需要根據(jù)具體情況進(jìn)行決策。填充均值和使用其他數(shù)據(jù)點(diǎn)的信息填充缺失值通常適用于數(shù)據(jù)集中存在少量缺失值的情況。使用其他數(shù)據(jù)點(diǎn)的信息填充缺失值和刪除缺失值適用于數(shù)據(jù)集中存在大量缺失值的情況。此外,缺失值處理的方法也需要考慮到數(shù)據(jù)集的完整性和一致性,以確保數(shù)據(jù)分析和建模的準(zhǔn)確性。
案例演示
首先導(dǎo)入我們演示的數(shù)據(jù)集
import pandas as pd import numpy as np import warnings warnings.filterwarnings('ignore') data = pd.read_csv('test.csv') data
我們可以使用isnull來查看缺失值個(gè)數(shù)
可以看出姓名列是沒有缺失值,年齡列有1個(gè)缺失值,余額列有兩個(gè)缺失值。
1.填充均值
比如我們想要將年齡列中的缺失值用均值來填充,首先可以看一下年齡列均值是多少
接著使用fillna()函數(shù)填充缺失值,第一個(gè)參數(shù)是填充的值,這里我們使用年齡的均值,也就是前面的24.25,可以使用int()轉(zhuǎn)化為整數(shù),inplace=True表示在原數(shù)據(jù)上修改,默認(rèn)為False。修改之后我們再次查看數(shù)據(jù)發(fā)現(xiàn)年齡列的缺失值已經(jīng)使用均值24填充。
2.填充中位數(shù)
還是以年齡為例,查看年齡列的中位數(shù)
使用中位數(shù)進(jìn)行填充
3.填充最大最小值
以年齡為例,查看最大最小值
使用最大最小值填充
4.前向填充/后向填充
前向填充就是將缺失值所在位置的上一個(gè)值作為填充值填充缺失數(shù)據(jù)。
后向填充就是將缺失值所在位置的下一個(gè)值作為填充值填充缺失數(shù)據(jù)。
但是如果我們在使用后向填充的時(shí)候,最后一個(gè)數(shù)據(jù)是缺失值的話,那么最后一個(gè)缺失值將會遺漏。所以我們可以前向和后向結(jié)合起來就可以做到萬無一失,比如下面的示范:
5.刪除缺失值
刪除的話直接使用dropna即可,需要在原數(shù)據(jù)上操作的話可以加個(gè)inplace=True。
2.2重復(fù)值處理
重復(fù)值的話一般都是采取刪除處理,因?yàn)橄嗤臄?shù)據(jù)出現(xiàn)了n次都是沒有意義的,一次就夠。
案例演示
首先導(dǎo)入演示數(shù)據(jù)集
我們可以先使用any函數(shù)和duplicated函數(shù)來檢測數(shù)據(jù)是否存在重復(fù)值,如果返回結(jié)果為True說明數(shù)據(jù)存在重復(fù)值;如果返回結(jié)果為False說明數(shù)據(jù)不存在重復(fù)值。
前面我們導(dǎo)入數(shù)據(jù)的時(shí)候就發(fā)現(xiàn)李四數(shù)據(jù)是有重復(fù)的,所以這里檢測的結(jié)果為True。刪除的話直接使用drop_duplicates函數(shù)即可。
2.3異常值處理
異常值是指在數(shù)據(jù)集中偏離通常模式或規(guī)律的值,可以是正常情況的異常值,也可以是異常情況的異常值。
正常情況的異常值。比如我們想建立居民收入水平的時(shí)候,那些收入極其高或低極端數(shù)據(jù)會影響模型的效果,所以我們一般要進(jìn)行剔除。
異常情況的異常值。比如數(shù)值型變量中出現(xiàn)負(fù)數(shù)或其他不符合常理的值等等。
檢測方法1
使用describe()方法來查看數(shù)值型變量是否存在極端值
檢測方法2
通過畫出箱線圖的方式來展示數(shù)據(jù)分布情況
比如上圖中的第五幅圖就明顯存在極端值。
處理的方法就是剔除這些異常數(shù)據(jù),這個(gè)方式很靈活。比如前面我們發(fā)現(xiàn)累計(jì)票房一般都是在100000以內(nèi),卻出現(xiàn)了700000的極端數(shù)據(jù),我們就可以采取以下方式挑選出正常數(shù)據(jù):
如果我們有多個(gè)條件的話可以使用()和&/|字符來結(jié)合使用,&表示and交集的意思,|表示or并集的意思。比如下圖我們就挑選出累計(jì)票房小于100000并且場均人次小于100的數(shù)據(jù):
3.如何避免無效數(shù)據(jù)?
那我覺得就需要在獲取數(shù)據(jù)的源頭來防止無效數(shù)據(jù)的產(chǎn)生,這樣也能較少花在處理無效數(shù)據(jù)的時(shí)間成本上。獲取數(shù)據(jù)一般就是通過爬蟲獲取或從數(shù)據(jù)庫中提取。爬蟲的話,在編寫代碼時(shí)可以采取適當(dāng)?shù)倪^濾措施,比如某個(gè)字段出現(xiàn)空值或異常值,你可以將這條數(shù)據(jù)不進(jìn)行保存。從數(shù)據(jù)庫提取的話,在sql上加一些去重/去空的語句即可。
以上就是Python中處理無效數(shù)據(jù)的詳細(xì)教程的詳細(xì)內(nèi)容,更多關(guān)于Python 處理無效數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python使用fileinput模塊實(shí)現(xiàn)逐行讀取文件的方法
這篇文章主要介紹了python使用fileinput模塊實(shí)現(xiàn)逐行讀取文件的方法,涉及Python中fileinput模塊操作文件的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04Python3實(shí)現(xiàn)爬取簡書首頁文章標(biāo)題和文章鏈接的方法【測試可用】
這篇文章主要介紹了Python3實(shí)現(xiàn)爬取簡書首頁文章標(biāo)題和文章鏈接的方法,結(jié)合實(shí)例形式分析了Python3基于urllib及bs4庫針對簡書網(wǎng)進(jìn)行文章抓取相關(guān)操作技巧,需要的朋友可以參考下2018-12-12Django后端發(fā)送小程序微信模板消息示例(服務(wù)通知)
今天小編就為大家分享一篇Django后端發(fā)送小程序微信模板消息示例(服務(wù)通知),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12Python實(shí)現(xiàn)的百度站長自動URL提交小工具
這篇文章主要介紹了Python實(shí)現(xiàn)的百度站長自動URL提交小工具,主要難點(diǎn)在驗(yàn)證碼識別部分,研究驗(yàn)證碼識別的朋友可以參考下2014-06-06