《利用Python進行數(shù)據(jù)分析·第2版》第7章 數(shù)據(jù)清洗和準(zhǔn)備

在數(shù)據(jù)分析和建模的過程中,相當(dāng)多的時間要用在數(shù)據(jù)準(zhǔn)備上:加載、清理、轉(zhuǎn)換以及重塑。這些工作會占到分析師時間的80%或更多。有時,存儲在文件和數(shù)據(jù)庫中的數(shù)據(jù)的格式不適合某個特定的任務(wù)。許多研究者都選擇使用通用編程語言(如Python、Perl、R或Java)或UNIX文本處理工具(如sed或awk)對數(shù)據(jù)格式進行專門處理。幸運的是,pandas和內(nèi)置的Python標(biāo)準(zhǔn)庫提供了一組高級的、靈活的、快速的工具,可以讓你輕松地將數(shù)據(jù)規(guī)變?yōu)橄胍母袷健?/p>
如果你發(fā)現(xiàn)了一種本書或pandas庫中沒有的數(shù)據(jù)操作方式,請盡管在郵件列表或GitHub網(wǎng)站上提出。實際上,pandas的許多設(shè)計和實現(xiàn)都是由真實應(yīng)用的需求所驅(qū)動的。
在本章中,我會討論處理缺失數(shù)據(jù)、重復(fù)數(shù)據(jù)、字符串操作和其它分析數(shù)據(jù)轉(zhuǎn)換的工具。下一章,我會關(guān)注于用多種方法合并、重塑數(shù)據(jù)集。
7.1 處理缺失數(shù)據(jù)
在許多數(shù)據(jù)分析工作中,缺失數(shù)據(jù)是經(jīng)常發(fā)生的。pandas的目標(biāo)之一就是盡量輕松地處理缺失數(shù)據(jù)。例如,pandas對象的所有描述性統(tǒng)計默認(rèn)都不包括缺失數(shù)據(jù)。
缺失數(shù)據(jù)在pandas中呈現(xiàn)的方式有些不完美,但對于大多數(shù)用戶可以保證功能正常。對于數(shù)值數(shù)據(jù),pandas使用浮點值NaN(Not a Number)表示缺失數(shù)據(jù)。我們稱其為哨兵值,可以方便的檢測出來:
In [10]: string_data = pd.Series(['aardvark', 'artichoke', np.nan, 'avocado'])
In [11]: string_data
Out[11]:
0 aardvark
1 artichoke
2 NaN
3 avocado
dtype: object
In [12]: string_data.isnull()
Out[12]:
0 False
1 False
2 True
3 False
dtype: bool
在pandas中,我們采用了R語言中的慣用法,即將缺失值表示為NA,它表示不可用not available。在統(tǒng)計應(yīng)用中,NA數(shù)據(jù)可能是不存在的數(shù)據(jù)或者雖然存在,但是沒有觀察到(例如,數(shù)據(jù)采集中發(fā)生了問題)。當(dāng)進行數(shù)據(jù)清洗以進行分析時,最好直接對缺失數(shù)據(jù)進行分析,以判斷數(shù)據(jù)采集的問題或缺失數(shù)據(jù)可能導(dǎo)致的偏差。
閱讀全文:http://t.cn/Ru3CV5a