在大數(shù)據(jù)時(shí)代,數(shù)據(jù)思維已開始深刻變革各行各業(yè),從我們的電商消費(fèi)信息、運(yùn)動(dòng)軌跡、社交數(shù)據(jù)、產(chǎn)品使用習(xí)慣,到企業(yè)的調(diào)研、設(shè)計(jì)、產(chǎn)品、運(yùn)營、營銷,再到交通、金融、生產(chǎn)制造、公共服務(wù)。而由于Python在數(shù)據(jù)獲取、數(shù)據(jù)處理、數(shù)據(jù)分析、數(shù)據(jù)挖掘、數(shù)據(jù)可視化、機(jī)器學(xué)習(xí)、人工智能等方面有著非常多成熟的庫以及活躍的社區(qū),構(gòu)成數(shù)據(jù)科學(xué)領(lǐng)域最為完整且完善的生態(tài)。
尤其是在NLP(自然語言處理)項(xiàng)目中,用Python來處理數(shù)據(jù)也就變得更加廣泛了。下面將詳細(xì)地介紹五款必備的高效Python數(shù)據(jù)分析庫。這會(huì)對(duì)我們編寫高級(jí)復(fù)雜的程序幫助很大。但不用擔(dān)心,你不需要有任何技術(shù)基礎(chǔ)就可上手這些庫。
一、Numerizer庫,文本數(shù)字的分析轉(zhuǎn)換
Numerizer是一個(gè)將自然語言中文本數(shù)字快速轉(zhuǎn)換為整數(shù)型(int)和浮點(diǎn)型(float)數(shù)字的Python模塊或庫。它是一個(gè)開源的GitHub項(xiàng)目。特別說明,為了方便演示該庫的使用。這里推薦使用Anaconda, 它是一個(gè)開源的Python發(fā)行版本,其包含了conda、Python等180多個(gè)科學(xué)包及其依賴項(xiàng),非常適合初學(xué)者。
1.Numerizer庫的安裝
打開Anaconda的終端,輸入如下語句進(jìn)行Numerizer庫的安裝。
pip install numerizer
2. Numerizer庫實(shí)例演示
安裝完成后,我們可以運(yùn)行Anaconda內(nèi)置的spyder,并輸入以下語句
from numerizer import numerize
numerize('forty two')
numerize('forty-two')
numerize('four hundred and sixty two')
numerize('one fifty')
numerize('twelve hundred')
numerize('twenty one thousand four hundred and seventy three')
numerize('one million two hundred and fifty thousand and seven')
numerize('one billion and one')
numerize('nine and three quarters')
numerize('platform nine and three quarters')
程序運(yùn)行結(jié)果如下圖所示,可以很清楚地發(fā)現(xiàn),英文文字?jǐn)?shù)字被準(zhǔn)備轉(zhuǎn)換成了相應(yīng)的數(shù)字。
二. Missingo庫,丟失值可視化分析
在現(xiàn)實(shí)世界的數(shù)據(jù)集中發(fā)現(xiàn)丟失值是很普遍的。每次處理數(shù)據(jù)時(shí),缺失值是必須要考慮的問題。但是手工查看每個(gè)變量的缺失值是非常麻煩的一件事情。數(shù)據(jù)分析之前首先要保證數(shù)據(jù)集的質(zhì)量。Missingo就是一個(gè)可視化丟失值的庫。它提供了一個(gè)靈活且易于使用的缺失數(shù)據(jù)可視化和實(shí)用程序的小工具集,使您可以快速直觀地總結(jié)數(shù)據(jù)集的完整性。
1. Missingo庫的安裝
這里同樣是使用Anaconda,打開Anaconda的終端后,輸入如下語句進(jìn)行Missingo庫的安裝
pip install missingno
2. Missingo庫實(shí)例演示
下面的樣例數(shù)據(jù)使用 NYPD Motor Vehicle Collisions Dataset 數(shù)據(jù)集. 運(yùn)行下面語句即可獲得數(shù)據(jù)
pip install quilt
quilt install ResidentMario/missingno_data
之后,加載數(shù)據(jù)到內(nèi)存,輸入以下語句
from quilt.data.ResidentMario import missingno_data
collisions = missingno_data.nyc_collision_factors()
collisions = collisions.replace("nan", np.nan)
在Missingo庫中,有幾個(gè)主要函數(shù)以不同方式的可視化展示數(shù)據(jù)集數(shù)據(jù)缺失情況。其中,
Matrix是使用最多的函數(shù),能快速直觀地看到數(shù)據(jù)集的完整性情況。輸入以下語句,
import missingno as msno
%matplotlib inline
msno.matrix(collisions.sample(250))
程序運(yùn)行后,矩陣顯示的結(jié)果如下。圖中右邊顯示的迷你圖總結(jié)了數(shù)據(jù)集的總的完整性分布,并標(biāo)出了完整性最大和最小的點(diǎn)
特別說明,這里也可以通過figsize指定輸出圖像大小,例如下面語句msno.matrix(collisions.sample(250),figsize=(12,5))
此外,msno.bar函數(shù)也是一個(gè)非常有用的函數(shù),可以簡單地展示無效數(shù)據(jù)的條形圖。
msno.bar(collisions.sample(1000))
程序運(yùn)行后,顯示的數(shù)據(jù)條形圖
三. Faker庫,虛擬測(cè)試數(shù)據(jù)生成器
在軟件需求、開發(fā)、測(cè)試過程中,我們可能會(huì)遇到需要生成一些測(cè)試數(shù)據(jù)或在分析中使用一些虛擬數(shù)據(jù)的情況。針對(duì)這種情況,我們一般要么使用已有的系統(tǒng)數(shù)據(jù),要么需要手動(dòng)制造一些數(shù)據(jù)。但由于現(xiàn)在的業(yè)務(wù)系統(tǒng)數(shù)據(jù)多種多樣,千變?nèi)f化。在手動(dòng)制造數(shù)據(jù)的過程中,可能需要花費(fèi)大量精力和工作量,此項(xiàng)工作既繁復(fù)又容易出錯(cuò),而且,部分?jǐn)?shù)據(jù)的手造工作無法保障:比如UUID類數(shù)據(jù)、MD5、SHA加密類數(shù)據(jù)等。
Faker是一個(gè)Python庫,開源的GITHUB項(xiàng)目,主要用來創(chuàng)建偽數(shù)據(jù),使用Faker包,無需再手動(dòng)生成或者手寫隨機(jī)數(shù)來生成數(shù)據(jù),只需要調(diào)用Faker提供的方法,即可完成數(shù)據(jù)的快速生成。
1. Faker庫的安裝
pip install faker
2. Faker庫實(shí)例演示
輸入下面語句,引用初始化
from faker import Faker
f=Faker(locale='zh_CN')
特別說明,關(guān)于初始化參數(shù)locale:為生成數(shù)據(jù)的文化選項(xiàng),默認(rèn)為英文(en_US)。如果要生成相對(duì)應(yīng)的中文隨機(jī)信息(比如:名字,地址,郵編,城市,省份等),需使用zh_CN值。
之后,輸入下面語句,將隨機(jī)生成假的中文名字和地址,非常簡單易用。
for i in range(1,100):
print(f.name()+" "+f.address())
運(yùn)行結(jié)果如下:
四. Emot庫,表情符號(hào)數(shù)據(jù)分析
在情感數(shù)據(jù)分析方面,收集和分析有關(guān)表情符號(hào)的數(shù)據(jù)可以提供非常有用的信息。而表情符號(hào)是一種小到可以插入到表達(dá)情感或想法的文本中的圖像。它僅由使用鍵盤字符(如字母、數(shù)字和標(biāo)點(diǎn)符號(hào))組成。
Emot庫也是一個(gè)開源Github項(xiàng)目,可以幫助我們把表情符號(hào)emojis和emoticons轉(zhuǎn)換成單詞。它有一個(gè)很全面的表情符號(hào)與相應(yīng)單詞映射的集合。
Emot庫的安裝,
輸入以下語句即可自動(dòng)安裝
pip install emot
2,Emot庫實(shí)例演示
輸入下面語句
import emot
text = "I love python :-)"
emot.emoji(text)
emot.emoticons(text)
程序運(yùn)行后,顯示結(jié)果如下,可以很清楚看到原語句中的人臉被識(shí)別轉(zhuǎn)換成了Happy face smiley文字信息。
五. Chartify庫,輕松高效創(chuàng)建圖表數(shù)據(jù)
盡管現(xiàn)在有很多創(chuàng)建圖表的工具,如Seaborn,Matplotlib,Plotly,Bokeh,Ggplot2,D3和Tableau等,但是仍然需要花費(fèi)很多時(shí)間在創(chuàng)建圖表的細(xì)節(jié)上。為了讓操作簡單化,作為全球最大的正版流媒體音樂服務(wù)平臺(tái)之一Spotify開源了一個(gè)年度最佳Python庫Chartify。它可以幫助你以簡單明了的方式創(chuàng)建圖表,讓數(shù)據(jù)可視化變得輕而易舉。與其他工具相比,Chartify庫具有用戶友好的語法和一致的數(shù)據(jù)格式。創(chuàng)建漂亮而快速的圖表所需的時(shí)間更少。
1.Chartify庫安裝,
輸入以下語句即可
pip install chartify
2.Chartify庫實(shí)例演示
Chartify庫安裝完成后,輸入下面語句,
import pandas as pd
import chartify
# Generate example data
data = chartify.examples.example_data()
到這里,我們已經(jīng)加載了一些示例數(shù)據(jù)。下面對(duì)實(shí)例數(shù)據(jù)來做一些格式轉(zhuǎn)換:
total_quantity_by_month_and_fruit = (data.groupby(
[data['date'] + pd.offsets.MonthBegin(-1), 'fruit'])['quantity'].sum()
.reset_index().rename(columns={'date': 'month'})
.sort_values('month'))
print(total_quantity_by_month_and_fruit.head())
接著,我們就可以將示例表格數(shù)據(jù)以圖的形式畫出來,輸入下面語句:
# Plot the data
ch = chartify.Chart(blank_labels=True, x_axis_type='datetime')
ch.set_title("Stacked area")
ch.set_subtitle("Represent changes in distribution.")
ch.plot.area(
data_frame=total_quantity_by_month_and_fruit,
x_column='month',
y_column='quantity',
color_column='fruit',
stacked=True)
ch.show('png')
程序運(yùn)行后,結(jié)果顯示如下。原示例數(shù)據(jù)中的水果種類(Apple, Banana,Grape,Orange,Apple),數(shù)量和時(shí)間以非常直觀清晰的方式展現(xiàn)出來。而整個(gè)過程的實(shí)現(xiàn),使用的語句非常簡潔。