摘要:
五款必備高效Python數(shù)據(jù)分析庫,你知道幾個?
在大數(shù)據(jù)時代,數(shù)據(jù)思維已開始深刻變革各行各業(yè),從我們的電商消費信息、運動軌跡、社交數(shù)據(jù)、產(chǎn)品使用習慣,到企業(yè)的調(diào)研、設計、產(chǎn)品、運營、營銷,再到交通、金融、生產(chǎn)制造、公共服務。而由于Python在數(shù)據(jù)獲取、數(shù)據(jù)處理、數(shù)據(jù)分析、數(shù)據(jù)挖掘、數(shù)據(jù)可視化、機器學習、人工智能等方面有著非常多成熟的庫以及活躍的社區(qū),構(gòu)成數(shù)據(jù)科學領域最為完整且完善的生態(tài)。
尤其是在NLP(自然語言處理)項目中,用Python來處理數(shù)據(jù)也就變得更加廣泛了。下面將詳細地介紹五款必備的高效Python數(shù)據(jù)分析庫。這會對我們編寫高級復雜的程序幫助很大。但不用擔心,你不需要有任何技術基礎就可上手這些庫。
一.Numerizer庫,文本數(shù)字的分析轉(zhuǎn)換
Numerizer是一個將自然語言中文本數(shù)字快速轉(zhuǎn)換為整數(shù)型(int)和浮點型(float)數(shù)字的Python模塊或庫。它是一個開源的GitHub項目(https://github.com/jaidevd/numerizer)。特別說明,為了方便演示該庫的使用。這里推薦使用Anaconda,它是一個開源的Python發(fā)行版本,其包含了conda、Python等180多個科學包及其依賴項,非常適合初學者。
打開Anaconda的終端,輸入如下語句進行Numerizer庫的安裝。
安裝完成后,我們可以運行Anaconda內(nèi)置的spyder,并輸入以下語句
fromnumerizer import numerize
numerize('fourhundred and sixty two')
numerize('twelvehundred')
numerize('twentyone thousand four hundred and seventy three')
numerize('onemillion two hundred and fifty thousand and seven')
numerize('onebillion and one')
numerize('nineand three quarters')
numerize('platformnine and three quarters')
程序運行結(jié)果如下圖所示,可以很清楚地發(fā)現(xiàn),英文文字數(shù)字被準備轉(zhuǎn)換成了相應的數(shù)字。
在現(xiàn)實世界的數(shù)據(jù)集中發(fā)現(xiàn)丟失值是很普遍的。每次處理數(shù)據(jù)時,缺失值是必須要考慮的問題。但是手工查看每個變量的缺失值是非常麻煩的一件事情。數(shù)據(jù)分析之前首先要保證數(shù)據(jù)集的質(zhì)量。Missingo就是一個可視化丟失值的庫。它提供了一個靈活且易于使用的缺失數(shù)據(jù)可視化和實用程序的小工具集,使您可以快速直觀地總結(jié)數(shù)據(jù)集的完整性。(該庫的GitHub地址:https://github.com/ResidentMario/missingno)
這里同樣是使用Anaconda,打開Anaconda的終端后,輸入如下語句進行Missingo庫的安裝
下面的樣例數(shù)據(jù)使用NYPD Motor VehicleCollisions Dataset 數(shù)據(jù)集.運行下面語句即可獲得數(shù)據(jù)
quiltinstall ResidentMario/missingno_data
之后,加載數(shù)據(jù)到內(nèi)存,輸入以下語句
fromquilt.data.ResidentMario import missingno_data
collisions= missingno_data.nyc_collision_factors()
collisions= collisions.replace("nan", np.nan)
在Missingo庫中,有幾個主要函數(shù)以不同方式的可視化展示數(shù)據(jù)集數(shù)據(jù)缺失情況。其中,Matrix是使用最多的函數(shù),能快速直觀地看到數(shù)據(jù)集的完整性情況。輸入以下語句:
msno.matrix(collisions.sample(250))
程序運行后,矩陣顯示的結(jié)果如下。圖中右邊顯示的迷你圖總結(jié)了數(shù)據(jù)集的總的完整性分布,并標出了完整性最大和最小的點。
特別說明,這里也可以通過figsize指定輸出圖像大小,例如下面語句:msno.matrix(collisions.sample(250),figsize=(12,5))
此外,msno.bar函數(shù)也是一個非常有用的函數(shù),可以簡單地展示無效數(shù)據(jù)的條形圖。
msno.bar(collisions.sample(1000))
三.Faker庫,虛擬測試數(shù)據(jù)生成器
在軟件需求、開發(fā)、測試過程中,我們可能會遇到需要生成一些測試數(shù)據(jù)或在分析中使用一些虛擬數(shù)據(jù)的情況。針對這種情況,我們一般要么使用已有的系統(tǒng)數(shù)據(jù),要么需要手動制造一些數(shù)據(jù)。但由于現(xiàn)在的業(yè)務系統(tǒng)數(shù)據(jù)多種多樣,千變?nèi)f化。在手動制造數(shù)據(jù)的過程中,可能需要花費大量精力和工作量,此項工作既繁復又容易出錯,而且,部分數(shù)據(jù)的手造工作無法保障:比如UUID類數(shù)據(jù)、MD5、SHA加密類數(shù)據(jù)等。
Faker是一個Python庫,開源的GITHUB項目(https://github.com/joke2k/faker),主要用來創(chuàng)建偽數(shù)據(jù),使用Faker包,無需再手動生成或者手寫隨機數(shù)來生成數(shù)據(jù),只需要調(diào)用Faker提供的方法,即可完成數(shù)據(jù)的快速生成。
特別說明,關于初始化參數(shù)locale:為生成數(shù)據(jù)的文化選項,默認為英文(en_US)。如果要生成相對應的中文隨機信息(比如:名字,地址,郵編,城市,省份等),需使用zh_CN值。
之后,輸入下面語句,將隨機生成假的中文名字和地址,非常簡單易用。
print(f.name()+" "+f.address())
四.Emot庫,表情符號數(shù)據(jù)分析
在情感數(shù)據(jù)分析方面,收集和分析有關表情符號的數(shù)據(jù)可以提供非常有用的信息。而表情符號是一種小到可以插入到表達情感或想法的文本中的圖像。它僅由使用鍵盤字符(如字母、數(shù)字和標點符號)組成。
Emot庫也是一個開源Github項目(https://github.com/NeelShah18/emot),可以幫助我們把表情符號emojis和emoticons轉(zhuǎn)換成單詞。它有一個很全面的表情符號與相應單詞映射的集合。