matplotlib數(shù)據(jù)可視化分析
# matplotlib 數(shù)據(jù)可視化分析
from matplotlib import pylab
import numpy
# 下面2行定義X軸喇颁,Y軸
x=[1,2,3,4,8]
y=[1,2,3,4,8]
plot的方法是這樣使用(x軸數(shù)據(jù),y軸數(shù)據(jù),展現(xiàn)形式)
pylab.plot(x,y) # 先把x,y軸的信息塞入pylab里面,再調用show方法來畫圖
pylab.show() # 這一步開始畫圖,默認是至線圖
pylab.plot(x,y,'or') # 添加O表示畫散點圖臣淤,r表示red
pylab.show()
pylab.plot(x,y,'r:') #虛線圖
pylab.show()
pylab.plot(x,y,'pr--') #p是圖形為五角星,r為紅色,--表示虛線
pylab.title('for learnning') # 圖形標題
pylab.xlabel('args') # x軸標簽
pylab.ylabel('salary') # y軸標簽
pylab.xlim(2) # 從y軸的2開始做線
pylab.show()
'''
關于圖形類型往核,有下面幾種:
1.直線圖(默認)
2.- 直線
3.-- 虛線
4.-. -.形式
5.: 細小虛線
關于顏色,有下面幾種:
1.c-青色
2.r-紅色
3.m-品紅
4.g-綠色
5.b-藍色
6.y-黃色
7.k-黑色
8.w-白色
關于形狀嚷节,有下面幾種:
1.s 方形
2.* 星形
3.p 五角形
'''
直方圖
# 直方圖
from matplotlib import pylab
import numpy
data1 = numpy.random.normal(5.0,4.0,10) # 正態(tài)隨機數(shù)
pylab.hist(data1)
pylab.show()
'''
Y軸為出現(xiàn)的次數(shù)聂儒,X軸為這個數(shù)的值(或者是范圍)
還可以指定直方圖類型通過histtype參數(shù):
圖形區(qū)別語言無法描述很詳細,大家可以自信嘗試硫痰。
1.bar :is a traditional bar-type histogram. If multiple data
are given the bars are aranged side by side.
(1.bar:是傳統(tǒng)的條形柱狀圖衩婚。)
2.barstacked :is a bar-type histogram where multiple
data are stacked on top of each other.
(2.barstacked:一個多個條形柱狀圖數(shù)據(jù)堆疊在一起。)
3.step :generates a lineplot that is by default
unfilled.
(3.step:內部不填充效斑。)
4.stepfilled :generates a lineplot that is by default
filled.
(4.stepfilled:內部填充非春。)
'''
# 舉個例子:
sty=numpy.arange(1,30,2)
pylab.hist(data1,histtype='barstacked')
pylab.show()
子圖功能
什么是子圖功能呢?子圖就是在一個大的畫板里面能夠顯示多張小圖,每個一小圖為大畫板的子圖奇昙。
我們知道生成一個圖是使用plot功能护侮,子圖就是subplog。代碼操作如下:
from matplotlib import pylab
pylab.subplot(2,2,1) # 申明一個大圖里面劃分成4塊(即2*2)储耐,子圖使用第一個區(qū)域(坐標為x=1,y=1)
pylab.subplot(2,2,2) # 申明一個大圖里面劃分成4塊(即2*2)羊初,子圖使用第二個區(qū)域(坐標為x=2,y=2)
x1=[1,4,6,9]
x2=[3,21,33,43]
pylab.plot(x1,x2) # 這個plot表示把x,y軸數(shù)據(jù)塞入前一個子圖中。我們可以在每一個子圖后使用plot來塞入x,y軸的數(shù)據(jù)
pylab.subplot(2,1,2) # 申明一個大圖里面劃分成2塊(即)什湘,子圖使用第二個區(qū)域(坐標為x=1,y=2)
pylab.show()
實踐小例子
我們現(xiàn)在可以通過一堆數(shù)據(jù)來繪圖长赞,根據(jù)圖能夠很容易的發(fā)現(xiàn)異常。下面我們就通過一個csv文件來實踐下闽撤,這個csv文件是某個網(wǎng)站的文章閱讀數(shù)與評論數(shù)得哆。
先說說這個csv的文件結構,第一列是序號哟旗,第二列是每篇文章的URL贩据,第三列每篇文章的閱讀數(shù),第四列是每篇評論數(shù)闸餐。
我們的需求就是把評論數(shù)作為Y軸乐设,閱讀數(shù)作為X軸,所以我們需要獲取第三列和第四列的數(shù)據(jù)绎巨。我們知道獲取數(shù)據(jù)的方法是通過pandas的values方法來獲取某一行的值近尚,在對這一行的值做切片處理,獲取下標為3(閱讀數(shù))和4(評論數(shù))的值场勤,但是戈锻,這里只是一行的值,我們需要是這個csv文件下的所有評論數(shù)和閱讀數(shù)和媳,那怎么辦格遭?聰明的你會說,我自定義2個列表留瞳,我遍歷下這個csv文件拒迅,把閱讀數(shù)和評論數(shù)分別添加到對應的列表里,這不就行了嘛她倘。呵呵璧微,其實有一個更快捷的方法,那么就是使用T轉置方法硬梁,這樣再通過values方法前硫,就能直接獲取這一評論數(shù)和閱讀數(shù)了,此時在交給你matplotlib里的pylab方法來作圖荧止,那么就OK了屹电。了解思路后阶剑,那么就寫吧。
代碼
csv_data = pandas.read_csv('F:\Learnning\CSDN-python大數(shù)據(jù)\hexun.csv')
dt = csv_data.T # 裝置下危号,把閱讀數(shù)和評論數(shù)轉為行
readers=dt.values[3]
comments = dt.values[4]
pylab.xlabel(u'reads')
pylab.ylabel(u'comments') # 打上標簽
pylab.title(u"The Article's reads and comments")
pylab.plot(readers,comments,'ob')
pylab.show()