干貨 | Python爬蟲實戰(zhàn)(中):數(shù)據(jù)可視化-教你做出漂亮的圖表
文案代碼 向柯瑋
審核校對 鄧發(fā)珩
前言
各位看客老爺們,我又來啦。上一期我們利用Python+百度地圖POI抓取了一些高校之間的距離數(shù)據(jù),傳送門:
干貨 | Python爬蟲實戰(zhàn):兩點間的真實行車時間與路況分析(上)
不知道上一期的爬取數(shù)據(jù)的內(nèi)容大家都品嘗的怎么樣了呢。

今天給大家?guī)淼氖莗ython中對數(shù)據(jù)進行可視化處理的內(nèi)容。
可能大家并不是很懂這個可視化的意思,大家可以先在腦海里面腦補一下那種酷炫的數(shù)據(jù)分析圖,腦補出來了嗎?
嘿嘿,用Python究竟能做一些什么樣的圖表呢,可以肯定的告訴大家,只有你想不到,沒有它做不到!吊了半天胃口,現(xiàn)在上圖!
直角坐標系動態(tài)散點圖
直角坐標系柱狀圖
3D柱狀圖
地圖對,我們要做的圖就是和上面這幾張圖片一樣!酷吧?

上面的效果圖都是我們今天要介紹的主角pyecharts庫制作的!當然,pyecharts的作圖類型肯定不僅僅只有上述這些圖形,它還有很多很多類型,在這里我就不多說了。
在這一期推文中呢,我們主要介紹的是第一種圖形,柱狀圖的使用。
目錄
pyecharts模塊的下載
模型的建立
數(shù)據(jù)的導(dǎo)入
圖形的生成
加點更炫的
寫在最后
pyecharts模塊的下載
要使用這個模塊,你必須要下載這個模塊,打開自己電腦的cmd,輸入pip install pyecharts就可以了,如果本來就有這個模塊的話,就不用下載了。
當然,如果電腦沒有pip這個模塊的話,需要自己去下載一個這個模塊,在后續(xù)的推文中,小瑋會給大家?guī)硪恍﹑ython的基本配置應(yīng)該做的相關(guān)推文,幫助大家解決python的安裝問題。

在安裝這個模塊之后,我們就可以在編譯器中引用這個模塊了。
from pyecharts.charts import Bar
這里的Bar是柱狀圖的意思。
pyecharts的庫里面有很多很多東西,我們沒有必要全部引用,那樣會讓本來簡單的程序運行起來忒慢。
模型的建立
引入了這個模塊當然還不夠,我們還需要數(shù)據(jù)。
數(shù)據(jù)的導(dǎo)入
大家還記得我們上一篇推文中生成的csv文件嗎?如果已經(jīng)忘了,請回去再看看上一篇推文,然后運行程序把相應(yīng)的csv文件生成出來。

那么,我現(xiàn)在就認為大家已經(jīng)有這個csv文件了。在一個程序中,我們想要獲得一個文件的數(shù)據(jù),需要做什么?想一想。
沒錯,就是讀取這個文件。那么大家還記得讀取這個文件怎么辦嗎?沒錯,就是加入pandas模塊,運用pandas的函數(shù)來進行文件的讀取。
import pandas as pd
具體怎么讀取呢?和之前的也是一模一樣。
path_data=pd.read_csv(r'F:\my python\123.csv')
這些在上一篇推文中都已經(jīng)很詳細的介紹過了,這一次就不多說了。要是忘了記得回去看看奧-

圖形的生成
做好了這些之后,我們正式的來介紹一下建立柱狀圖這個函數(shù)。
第一步,定義一個變量是bar型變量。
bar=Bar()
這一句代碼的意思就是使bar為Bar型變量。接下里就是為這個變量賦x軸值和y軸值。
bar.add_xaxis(path_data['地點'].tolist())
bar.add_yaxis('用時',path_data['time'].tolist())
bar.add_yaxis('距離',path_data['distance'].tolist())
讓我們一句一句研究代碼。第一句,函數(shù)為add_xaxis(),就是添加x軸數(shù)據(jù),給x軸添加什么數(shù)據(jù)呢?Path_data中的‘出發(fā)時間’這一列數(shù)據(jù)。
在這個位置我們要注意,劃重點,一定要注意,在后面加上.tolist()。
因為path_data是最開始讀取csv文件的,里面的數(shù)據(jù)儲存形式和csv形式保持一致,所以我們要把她轉(zhuǎn)化為python中列表的形式,即使用.tolist這個函數(shù),否則的話在這個位置添加x軸值是不起任何作用的。
現(xiàn)在有了第一句的基礎(chǔ),理解第二句就不困難了,但是x軸和y軸的賦值形式任然有一些差別,這是為什么呢?
其實這是給我們賦的y值起一個名字,當然這個位置不起名字也可以,但是如果如果你有多個y值的時候就會產(chǎn)生意思分歧。
這是啥意思?看下面的圖就知道了。

Pyecharts是支持使用多個y值的。
比如這個圖里面,我們就使用了商家A和商家B兩個y值名稱,為了便于分辨,所以我的建議是取一個名字。
在最后,x值賦好了,y值賦好了,輸入代碼。
bar.render()
即可在當前python文件所在的目錄下面看到一個html文件,點進去就可以看到我們所制作的圖表了。

當然括號里面還可以填生成文件的名字和生成的地址,這些都是可以修改的。
因為當前我們只需要生成這一個文件,當前目錄下也沒有別的render文件,所以我們就省略了這個步驟。
現(xiàn)在回到我們當前的文件,打開新生成的文件,就可以看到我們剛剛做的圖表啦。
剛剛生成的圖但是,大家看到自己的圖表是不是感覺有一點空蕩蕩的,不夠酷炫?
不要著急,繼續(xù)往下面看,我們還有進階教程~
加點更炫的
想要使用更加酷炫的功能,我們需要再加入兩個模塊。
from pyecharts import options as opts # 導(dǎo)入配置模塊
from pyecharts.globals import ThemeType
這兩個模塊是pyecharts專門提供給使用者對圖表進行進一步完善。

比如說,你對這個圖表的整體顏色有要求,不想是原來的白色,你可以在最開始建立bar的時候這樣寫。
bar=Bar(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION,width='1280px',height='720px'))
Init_opts=opts.InitOpts()函數(shù)是給這個圖表設(shè)置一些初始參數(shù),比如說背景的顏色,分辨率等等的。
想設(shè)置主題色就用以下代碼。
theme=themeType.xxxx
這個xxx就是主題的顏色,我在這里寫的是紫色,當然還有其他的顏色,看客老爺可以自己去官網(wǎng)進行了解。后面分辨率的參數(shù)看客老爺可以根據(jù)自己需要進行調(diào)整。
這些是在建立圖表的時候進行的一些配置,那么在輸入數(shù)據(jù)以后,我們可以進行哪些步驟?
bar.set_global_opts(title_opts=opts.TitleOpts(title='武漢各高校之間的距離與乘車所需時間',subtitle='副標題'
),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=60)),datazoom_opts=[opts.DataZoomOpts()])
我們可以使用set_global_opts函數(shù)進行我們所需要的個性化設(shè)置。
比如說主標題啊,副標題啊,x值的旋轉(zhuǎn)角度啊,是否有滑塊,等等配置。那實例給大家舉一下例子看看這些具體指的什么。
主副標題在這個圖表中左上角的就是我的主標題,下面的就是我的副標題。
x值的旋轉(zhuǎn)角度X值傾斜的角度我們在這個圖片里也可以很清晰的看出來,當前旋轉(zhuǎn)的角度是60度,這個角度的旋轉(zhuǎn)范圍是-90°到90°。
滑塊功能滑塊就在最下面,那個可以滑動的東西。
因為有的時候可能數(shù)據(jù)太多,放在一個頁面里看起來太擁擠,這是我們可以用滑塊這個功能,使得我們的圖形更加分散,便于觀察。
最終的效果
寫在最后
當然,關(guān)于pyecharts的使用實例還有很多很多,各位看客老爺如果有興趣可以自己去pyecharts的官網(wǎng)進行學(xué)習(xí),這個項目是百度研發(fā)的,官網(wǎng)是中文的,還有十分詳細的教程免費提供,所以小瑋在這里就不多說了。

在這個位置,我們已經(jīng)完成了數(shù)據(jù)的爬取和做成圖表。
當然,這和老師吩咐的任務(wù)完成還有一定的距離,我們沒有統(tǒng)計時間,因為最近由于肺炎,道路沒有發(fā)生擁堵,統(tǒng)計時間發(fā)現(xiàn)并沒有明顯的變化,最終結(jié)果趨于一根平行x軸的直線。
所以就不在這里講解時間的統(tǒng)計和回歸分析的步驟了。等一切恢復(fù)正常了以后,會專門再寫一篇推文介紹。
最近的肺炎如此嚴重,各位看客老爺們一定要注意防護!
跟著小瑋,帶你一步一步走進數(shù)據(jù)結(jié)構(gòu)和爬蟲的世界。
代碼可以在后臺回復(fù) PC02 獲取
