您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)如何利用Python實現(xiàn)數(shù)據(jù)導(dǎo)入和可視化,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
通常,數(shù)據(jù)分析的第一步由獲取數(shù)據(jù)和導(dǎo)入數(shù)據(jù)到我們的工作環(huán)境組成。我們可以使用以下的Python代碼簡單的下載數(shù)據(jù):
Python
import urllib2 url = 'http://aima.cs.berkeley.edu/data/iris.csv' u = urllib2.urlopen(url) localFile = open('iris.csv'', 'w') localFile.write(u.read()) localFile.close() |
在以上的代碼片段中,我們使用了urllib2類庫以獲取伯克利大學(xué)網(wǎng)站的一個文件,并使用標準類庫提供的File對象把它保存到本地磁盤。數(shù)據(jù)包含鳶尾花(iris)數(shù)據(jù)集,這是一個包含了三種鳶尾花(山鳶尾、維吉尼亞鳶尾和變色鳶尾)的各50個數(shù)據(jù)樣本的多元數(shù)據(jù)集,每個樣本都有四個特征(或者說變量),即花萼(sepal)和花瓣(petal)的長度和寬度。以厘米為單位。
數(shù)據(jù)集以CSV(逗號分割值)的格式存儲。CSV文件可以很方便的轉(zhuǎn)化并把其中的信息存儲為適合的數(shù)據(jù)結(jié)構(gòu)。此數(shù)據(jù)集有5列(譯者注:原文是行,但這里應(yīng)該是列的意思),前4列包含著特征值,最后一列代表著樣本類型。CSV文件很容易被numpy類庫的genfromtxt方法解析:
Python
from numpy import genfromtxt, zeros # read the first 4 columns data = genfromtxt('iris.csv',delimiter=',',usecols=(0,1,2,3)) # read the fifth column target = genfromtxt('iris.csv',delimiter=',',usecols=(4),dtype=str) |
在上面的例子中我們創(chuàng)建了一個包含特征值的矩陣以及一個包含樣本類型的向量。我們可以通過查看我們加載的數(shù)據(jù)結(jié)構(gòu)的shape值來確認數(shù)據(jù)集的大?。?/p>
Python
print data.shape (150, 4) print target.shape (150,) |
我們也可以查看我們有多少種樣本類型以及它們的名字:
Python
print set(target) # build a collection of unique elements set(['setosa', 'versicolor', 'virginica']) |
當我們處理新數(shù)據(jù)的時候,一項很重要的任務(wù)是嘗試去理解數(shù)據(jù)包含的信息以及它的組織結(jié)構(gòu)。可視化可以靈活生動的展示數(shù)據(jù),幫助我們深入理解數(shù)據(jù)。
使用pylab類庫(matplotlib的接口)的plotting方法可以建一個二維散點圖讓我們在兩個維度上分析數(shù)據(jù)集的兩個特征值:
Python
from pylab import plot, show plot(data[target=='setosa',0],data[target=='setosa',2],'bo') plot(data[target=='versicolor',0],data[target=='versicolor',2],'ro') plot(data[target=='virginica',0],data[target=='virginica',2],'go') show() |
上面那段代碼使用第一和第三維度(花萼的長和寬),結(jié)果如下圖所示:
在上圖中有150個點,不同的顏色代表不同的類型;藍色點代表山鳶尾,紅色點代表變色鳶尾,綠色點代表維吉尼亞鳶尾。
另一種常用的查看數(shù)據(jù)的方法是分特性繪制直方圖。在本例中,既然數(shù)據(jù)被分為三類,我們就可以比較每一類的分布特征。下面這個代碼可以繪制數(shù)據(jù)中每一類型的第一個特性(花萼的長度):
Python
from pylab import figure, subplot, hist, xlim, show xmin = min(data[:,0]) xmax = max(data[:,0]) figure() subplot(411) # distribution of the setosa class (1st, on the top) hist(data[target=='setosa',0],color='b',alpha=.7) xlim(xmin,xmax) subplot(412) # distribution of the versicolor class (2nd) hist(data[target=='versicolor',0],color='r',alpha=.7) xlim(xmin,xmax) subplot(413) # distribution of the virginica class (3rd) hist(data[target=='virginica',0],color='g',alpha=.7) xlim(xmin,xmax) subplot(414) # global histogram (4th, on the bottom) hist(data[:,0],color='y',alpha=.7) xlim(xmin,xmax) show() |
結(jié)果如下圖:
根據(jù)上圖的直方圖,我們可以根據(jù)數(shù)據(jù)類型區(qū)分理解數(shù)據(jù)的特征。
關(guān)于“如何利用Python實現(xiàn)數(shù)據(jù)導(dǎo)入和可視化”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。