中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
【干貨】Python使用matplotlib實(shí)現(xiàn)數(shù)據(jù)可視化

俗話說得好,一圖勝千言。數(shù)據(jù)可視化是數(shù)據(jù)科學(xué)中的一個(gè)重要部分。創(chuàng)建可視化很簡(jiǎn)單,但是創(chuàng)建優(yōu)秀的可視化很難。

數(shù)據(jù)可視化有兩種主要用途:探索數(shù)據(jù)和交流數(shù)據(jù)。

matplotlib

現(xiàn)在有很多工具都可以用來可視化數(shù)據(jù),比如我們常用的Excel,還有數(shù)據(jù)科學(xué)另一門重要的語言R,以及百度的Echarts等可視化工具。今天我們的主角是Python中的matplotlib庫(官網(wǎng):http:// matplotlib.org),相對(duì)來說,matplotlib功能不是最強(qiáng)大的,但是對(duì)于基本的圖形來說,matplotlib很好用。

安裝matplotlib:如果你已經(jīng)安裝了Python的pip工具,那么你只需要pipinstall matplotlib即可安裝。這是最簡(jiǎn)單的一種方法,建議使用這種方法。

這里我們使用的是matplotlib.pyplot模塊。pyplot保持著一種內(nèi)部狀態(tài),你可以一步步創(chuàng)建可視化。一旦創(chuàng)建工作完成,就可以保存了(用savefig)或顯示(用show)你的圖形。

下面我們就來簡(jiǎn)單的畫一個(gè)折線圖。大家都知道達(dá)康書記比較關(guān)系GDP,一心想著提升GDP,我們就簡(jiǎn)單的讓GDP增長(zhǎng)起來吧。下面看一下代碼和視圖:

#折線圖
from matplotlib import pyplot as plt
#設(shè)置字體,顯示中文
from pylab import *
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']

#這里只是作圖示例,與真實(shí)數(shù)據(jù)無關(guān)
years = [2010, 2011, 2012, 2013, 2014, 2015, 2016]
gdp = [300.2, 520, 1024, 2800.5, 5868.9, 9999.9, 14998.8]

#創(chuàng)建一幅線圖,x軸是年份,y軸是gdp
plt.plot(years, gdp, color = 'green', marker = 'o', linestyle = 'solid')

#添加一個(gè)標(biāo)題
plt.title('人民的名義GDP')

#給y軸加標(biāo)記
plt.ylabel(r'十億元')
plt.ticklabel_format(useOffset=False)
plt.show

條形圖

如果我們想展示一些離散的項(xiàng)目集合中的數(shù)量是如何變化的,可以使用條形圖。比如:下圖顯示了幾個(gè)人擁有的硬幣數(shù)量。

#條形圖
from matplotlib import pyplot as plt
#設(shè)置字體,顯示中文
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']

coins = ['ming', 'hong', 'monkey', 'dakang', 'ruijin']
num_coins = [5, 4, 3, 8, 10]

#條形的默認(rèn)寬度是0.8,因此我們對(duì)左側(cè)坐標(biāo)加0.1,這樣條形就放在中心了
xs = [i + 0.1 for i, _ in enumerate(coins)]

#使用左側(cè)x坐標(biāo)[xs]和高度[num_coins]畫條形圖
plt.bar(xs, num_coins)

plt.ylabel('硬幣數(shù)量')
plt.title('每人擁有硬幣數(shù)量')

#使用人名標(biāo)記x軸,位置在x軸上條形的中心
plt.xticks([i + 0.5 for i, _ in enumerate(coins)], coins)

plt.show

條形圖也可以用來繪制擁有大量數(shù)值取值的變量直方圖,以此來探索這些取值是如何分布的。如下圖所示。

#直方圖
from matplotlib import pyplot as plt
from collections import Counter
#設(shè)置字體,顯示中文
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']

grades = [83, 95, 87, 70, 0, 85, 82, 100, 67, 73, 77, 0]
decile = lambda grade:grade //10*10
histogram = Counter(decile(grade) for grade in grades)

#每個(gè)條形向左側(cè)移動(dòng)4個(gè)單位,給每個(gè)條形設(shè)置正確的高度,條形寬度設(shè)置為8
plt.bar([x - 4 for x in histogram.keys], histogram.values, 8)

plt.axis([-5, 105, 0, 5]) #x軸取值-5到105,y軸取值0到5

plt.xticks([10*i for i in range(11)]) #x軸標(biāo)記為0,10,。。。100
plt.xlabel('十分相')
plt.ylabel('學(xué)生數(shù)')
plt.title('考試分?jǐn)?shù)分布圖')
plt.show

線圖

前面說過,可以用plt.plot來制作線圖,這種圖形可以涌過來清晰地顯示某種事物的趨勢(shì)。代碼和圖如下所示:

#線圖
from matplotlib import pyplot as plt
#設(shè)置字體,顯示中文
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
variance = [1, 2, 4, 8, 16, 32, 64, 128, 256]
bias_squared = [256, 128, 64, 32, 16, 8, 4, 2, 1]
table_error = [x+y for x, y in zip(variance, bias_squared)]
xs = [i for i,_ in enumerate(variance)]

#可以多次調(diào)用plt.plot方便在同一個(gè)圖上顯示多個(gè)序列
plt.plot(xs, variance, 'g-', label = 'variance') #綠色實(shí)線
plt.plot(xs, bias_squared, 'r-.', label = 'bias_squared') #紅色點(diǎn)虛線
plt.plot(xs, table_error, 'b:', label = 'table error') #藍(lán)色點(diǎn)線

#loc=9表示”頂部中央“
plt.legend(loc=9)
plt.xlabel('模型復(fù)雜度')
plt.title('偏差-方差權(quán)衡圖')
plt.show

散點(diǎn)圖

散點(diǎn)圖是顯示成對(duì)數(shù)據(jù)集的可視化關(guān)系的比較好的方法,比如畫一個(gè)你微信的好友數(shù),和你每天使用微信的時(shí)間之間的關(guān)系。看一下代碼和示例圖:

#散點(diǎn)圖
from matplotlib import pyplot as plt
#設(shè)置字體,顯示中文
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']

friends = [70, 65, 72, 63, 71, 64, 60, 64, 67]
minutes = [175, 170, 205, 120, 220, 130, 105, 145, 190]
labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']

plt.scatter(friends, minutes)

#每個(gè)點(diǎn)加標(biāo)記
for label, friend_count, minute_count in zip(labels, friends, minutes):
plt.annotate(label,
xy = (friend_count, minute_count), #把標(biāo)記放在對(duì)應(yīng)的點(diǎn)上
xytext = (-5, 5), #但要有輕微偏離
textcoords = 'offset points')
plt.title('日分鐘數(shù)與朋友數(shù)')
plt.xlabel('朋友數(shù)')
plt.ylabel('花在微信上的日分鐘數(shù)')
plt.show

小結(jié)

今天學(xué)習(xí)一下Python中使用matplotlib進(jìn)行數(shù)據(jù)可視化數(shù)據(jù)分析必須做到可視化。希望通過上面的操作能幫助大家。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
python爬取拉勾網(wǎng)數(shù)據(jù)并進(jìn)行數(shù)據(jù)可視化
【免費(fèi)贈(zèng)書】Python如何實(shí)現(xiàn)數(shù)據(jù)可視化?
03-Matplotlib繪圖邏輯框架之基礎(chǔ)架構(gòu)
Python圖表繪制:matplotlib繪圖庫入門
Python進(jìn)階之Matplotlib入門(一)
pandas 讀寫sql數(shù)據(jù)庫和matplotlib模塊
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服