Python 數(shù)據(jù)分析-matplotlib入門

python在數(shù)據(jù)分析眉睹,科學(xué)計(jì)算方面有幾個很重要的庫享完,分別是pandas,numpy有额,matplotlib般又。

剛剛開始接觸彼绷,就把自己看的代碼貼上來。

demo1:使用matplotlib 畫一個圖
import matplotlib.pyplot as plt

#x,y 分別表示的是橫坐標(biāo)和縱坐標(biāo)
x = [2,3,4,5,6,7]
y = [1,2,1,2,1,2]

plt.plot(x,y)
plt.show()
image.png
demo1-1 繪制散點(diǎn)圖
#繪制散點(diǎn)圖
x=[1,2,3,4,5]
y=[4,5,6,7,8]
plt.scatter(x,y,color='r')

#添加標(biāo)題茴迁,很坐標(biāo)的解釋寄悯,縱坐標(biāo)的解釋
plt.title(" web traffic")
plt.xlabel("time")
plt.ylabel("hits/hours")
#自動調(diào)整圖像顯示
#plt.autoscale(tight=True)
plt.show()
2017-06-01 22-50-52屏幕截圖.png

繪圖的時候一個很重要的技能就是,給畫出來的圖或者是點(diǎn)加上顏色的屬性堕义。實(shí)現(xiàn)方式猜旬,如下:

plt.scatter(x,y,color='r')

散點(diǎn)圖 + 加上label
如果有10個點(diǎn),他們分別分成3類倦卖,把他們畫出來洒擦,每個類別是不同的顏色。

import matplotlib.pyplot as plt 


x=range(0,10)
y=[ 2*(i**2) for i in x] 

print (x)
print (y)

# 假設(shè)這些點(diǎn) 分成三類0~2
# 下面是10個點(diǎn)分別對應(yīng)的類型
label=[0,0,1,1,1,0,1,2,2,0]

plt.scatter(x,y,c=label)
plt.show()
image.png
image.png

另外一個例子

使用plt.figure定義一個圖像窗口:編號為3怕膛;大小為(8, 5). 使用plt.plot畫(x ,y2)曲線. 使用plt.plot畫(x ,y1)曲線熟嫩,曲線的顏色屬性(color)為紅色;曲線的寬度(linewidth)為1.0;曲線的類型(linestyle)為虛線. 使用plt.show顯示圖像.

plt.figure(num=3, figsize=(8, 5),)
plt.plot(x, y2)
plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
plt.show()

指定圖的大小

plt.figure(figsize=(10, 5))  #指定比例

dpi表示的是像素褐捻,dpi越大掸茅,圖越大。

設(shè)置圖例

# set line syles
l1, = plt.plot(x, y1, label='linear line')
l2, = plt.plot(x, y2, color='red', linewidth=1.0, linestyle='--', label='square line')  #下面這一行很重要柠逞,沒有的話昧狮,就沒有l(wèi)abel
# 參數(shù) loc='upper right' 表示圖例將添加在圖中的右上角.
plt.legend(loc='upper right')

畫子圖
表示將整個圖像窗口分為2行2列, 當(dāng)前位置為1 ; plt.subplot(2,2,1)


import matplotlib.pyplot as plt 
plt.figure()

#表示將整個圖像窗口分為2行2列, 當(dāng)前位置為1. 
# 也可以簡寫成為 plt.subplot(221)
plt.subplot(2,2,1)  
plt.plot([0,1],[1,1])

plt.subplot(2,2,2)  
plt.plot([0,1],[2,2])

plt.subplot(2,2,3)  
plt.plot([0,1],[3,3])

plt.subplot(2,2,4)  
plt.plot([0,1],[4,4])
plt.show()

"""

import matplotlib.pyplot as plt 
plt.figure()
# 另一種寫法
ax1 = plt.subplot(2,2,1)  
ax2 = plt.subplot(2,2,2)  
ax3 =plt.subplot(2,2,3)  
ax4 =plt.subplot(2,2,4)  

ax1.plot([0,1],[1,1])
ax2.plot([0,1],[2,2])
ax3.plot([0,1],[3,3])
ax4.plot([0,1],[4,4])

plt.show()
"""
image.png
demo1-2 擬合數(shù)據(jù)

一般來說,原始數(shù)據(jù)都是單個的點(diǎn)板壮,大致上服從某種分布逗鸣,numpy提供了擬合數(shù)據(jù)的函數(shù),可以很方便的擬合好相應(yīng)的數(shù)據(jù)个束。對于開發(fā)者來說慕购,只需要選擇擬合的函數(shù),比如說使用一次函數(shù)來擬合茬底,使用字?jǐn)?shù)函數(shù)沪悲,使用泊松分布的函數(shù)來擬合等等。

x=[1,2,3,4,5,6,7,8,9,10]
def func(val):
    return val**2+np.random.normal()

#這里只是寫法不同阱表,y2殿如,y3是相同的
#目的是產(chǎn)生符合y=x*x的數(shù)據(jù)
y2=[func(xi) for xi in x ]
y3=[func(x[i]) for i in range(10)]

plt.scatter(x,y2,color='r')

#多項(xiàng)式擬合
fp2=np.polyfit(x,y2,2)
fy=np.poly1d(fp2)
#f2 就是擬合的函數(shù)
print (fy)

#顯示在圖片上面,fx表示x的取值范圍
fx=np.linspace(0,x[-1],100)
plt.plot(fx,fy(fx),color='g')

plt.show()
2017-06-01 22-59-19屏幕截圖.png
改變橫縱坐標(biāo)的比例
In [14]: x=range(0,100)
In [15]: y=np.sin(x)
In [20]: plt.plot(x,y)
Out[20]: [<matplotlib.lines.Line2D at 0x2dfc53c8c50>]
In [21]: plt.show()

如果想讓自定義橫坐標(biāo)刻度最爬,那么可以按照如下的方式:

In [23]: new_tick=[0,20,40,60,80,100]

In [24]: plt.xticks(new_tick)
Out[24]:
([<matplotlib.axis.XTick at 0x2dfc3105710>,
  <matplotlib.axis.XTick at 0x2dfc3100e80>,
  <matplotlib.axis.XTick at 0x2dfc31114e0>,
  <matplotlib.axis.XTick at 0x2dfc3283d30>,
  <matplotlib.axis.XTick at 0x2dfc3289588>,
  <matplotlib.axis.XTick at 0x2dfc3289da0>],
 <a list of 6 Text xticklabel objects>)

In [25]: plt.plot(x,y)
Out[25]: [<matplotlib.lines.Line2D at 0x2dfc329b5f8>]

In [26]: plt.show()

# 參考:
# https://morvanzhou.github.io/tutorials/data-manipulation/plt/2-3-axis1/
demo 1-3 :繪制動圖

這個也是一個很有用的功能涉馁,比如說希望一個點(diǎn)一個點(diǎn)的出現(xiàn)在圖片上谦絮,而不是一次性的出現(xiàn)一個繪制好了的結(jié)果购啄。

#動態(tài)畫圖
#axis 指明了坐標(biāo)軸的范圍
plt.axis([0,20,0,20])

#打開交互模式,顯示圖片的時候卖丸,不再阻塞程序運(yùn)行
plt.ion()
for i in range(100):
    y=np.random.random()
    plt.autoscale()
    plt.scatter(i,y)
    plt.pause(0.01)

運(yùn)行結(jié)果:

5201633-1735a7611557f001.gif

demo2:使用pandas 讀取excel文件

前幾天在處理數(shù)據(jù)的時候糠悯,遇到這個問題帮坚。問題是:有一個excel文件妻往,里面存放的是某一個路口每分鐘通過的車流量。


image.png

現(xiàn)在要分析的是试和,車流量(vol)和時間的關(guān)系是什么讯泣?

import pandas as pd
#import numpy as np
import matplotlib.pyplot as plt

path="1.xls"
df=pd.read_excel(path)
#print (df.head())
#print (df['speed'])
#print (df['vol'])

#plt.plot(df['time'],df['vol'])
plt.plot(df['time'],df['vol'],'.')
plt.show()

""" # 測試代碼 
print (df['speed'][1])
print (type(df['speed'][1]))
print (type (df['vol'][1]))
x=[]
y=[]
for i in range(0,10):
    x.append(df['vol'][i])
    y.append(df['speed'][i])
plt.plot(x,y)
plt.show()
"""

運(yùn)行結(jié)果:

2017-05-24 09-17-43屏幕截圖.png

車流量基本上服從泊松分布。
源碼:https://github.com/zhaozhengcoder/Python/tree/master/Data%20analysis

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末阅悍,一起剝皮案震驚了整個濱河市好渠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌节视,老刑警劉巖拳锚,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異肴茄,居然都是意外死亡晌畅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門寡痰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抗楔,“玉大人,你說我怎么就攤上這事拦坠×铮” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵贞滨,是天一觀的道長入热。 經(jīng)常有香客問我,道長晓铆,這世上最難降的妖魔是什么勺良? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮骄噪,結(jié)果婚禮上尚困,老公的妹妹穿的比我還像新娘。我一直安慰自己链蕊,他們只是感情好事甜,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著滔韵,像睡著了一般逻谦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上陪蜻,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天邦马,我揣著相機(jī)與錄音,去河邊找鬼。 笑死勇婴,一個胖子當(dāng)著我的面吹牛忱嘹,可吹牛的內(nèi)容都是我干的嘱腥。 我是一名探鬼主播耕渴,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼齿兔!你這毒婦竟也來了橱脸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤分苇,失蹤者是張志新(化名)和其女友劉穎添诉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體医寿,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡栏赴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了靖秩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片须眷。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖沟突,靈堂內(nèi)的尸體忽然破棺而出花颗,到底是詐尸還是另有隱情,我是刑警寧澤惠拭,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布扩劝,位于F島的核電站,受9級特大地震影響职辅,放射性物質(zhì)發(fā)生泄漏棒呛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一域携、第九天 我趴在偏房一處隱蔽的房頂上張望簇秒。 院中可真熱鬧,春花似錦涵亏、人聲如沸宰睡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拆内。三九已至,卻和暖如春宠默,著一層夾襖步出監(jiān)牢的瞬間麸恍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抹沪,地道東北人刻肄。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像融欧,于是被迫代替她去往敵國和親敏弃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容