乾貨 | Python爬蟲實戰(中):數據可視化-教你做出漂亮的圖表

文案程式碼 向柯瑋 審核校對 鄧發珩

前言

各位看客老爺們,我又來啦。上一期我們利用Python+百度地圖POI抓取了一些高校之間的距離數據,傳送門:

乾貨 | Python爬蟲實戰:兩點間的真實行車時間與路況分析(上)

不知道上一期的爬取數據的內容大家都品嘗的怎麼樣了呢。

今天給大家帶來的是python中對數據進行可視化處理的內容。

可能大家並不是很懂這個可視化的意思,大家可以先在腦海裡面腦補一下那種酷炫的數據分析圖,腦補出來了嗎?

嘿嘿,用Python究竟能做一些什麼樣的圖表呢,可以肯定的告訴大家,只有你想不到,沒有它做不到!吊了半天胃口,現在上圖!

直角坐標系動態散點圖

直角坐標系柱狀圖

3D柱狀圖

地圖

對,我們要做的圖就是和上面這幾張圖片一樣!酷吧?

上面的效果圖都是我們今天要介紹的主角pyecharts庫製作的!當然,pyecharts的作圖類型肯定不僅僅只有上述這些圖形,它還有很多很多類型,在這裡我就不多說了。

在這一期推文中呢,我們主要介紹的是第一種圖形,柱狀圖的使用。

目錄

  • pyecharts模組的下載
  • 模型的建立
    • 數據的導入
    • 圖形的生成
    • 加點更炫的
  • 寫在最後

pyecharts模組的下載

要使用這個模組,你必須要下載這個模組,打開自己電腦的cmd,輸入pip install pyecharts就可以了,如果本來就有這個模組的話,就不用下載了。

當然,如果電腦沒有pip這個模組的話,需要自己去下載一個這個模組,在後續的推文中,小瑋會給大家帶來一些python的基本配置應該做的相關推文,幫助大家解決python的安裝問題。

在安裝這個模組之後,我們就可以在編譯器中引用這個模組了。

from pyecharts.charts import Bar  

這裡的Bar柱狀圖的意思。

pyecharts的庫裡面有很多很多東西,我們沒有必要全部引用,那樣會讓本來簡單的程式運行起來忒慢。

模型的建立

引入了這個模組當然還不夠,我們還需要數據。

數據的導入

大家還記得我們上一篇推文中生成的csv文件嗎?如果已經忘了,請回去再看看上一篇推文,然後運行程式把相應的csv文件生成出來。

那麼,我現在就認為大家已經有這個csv文件了。在一個程式中,我們想要獲得一個文件的數據,需要做什麼?想一想。

沒錯,就是讀取這個文件。那麼大家還記得讀取這個文件怎麼辦嗎?沒錯,就是加入pandas模組,運用pandas的函數來進行文件的讀取。

import pandas as pd  

具體怎麼讀取呢?和之前的也是一模一樣。

path_data=pd.read_csv(r'F:my python123.csv')  

這些在上一篇推文中都已經很詳細的介紹過了,這一次就不多說了。要是忘了記得回去看看奧-

圖形的生成

做好了這些之後,我們正式的來介紹一下建立柱狀圖這個函數。

第一步,定義一個變數是bar型變數。

bar=Bar()  

這一句程式碼的意思就是使barBar型變數。接下里就是為這個變數賦x軸值和y軸值。

bar.add_xaxis(path_data['地點'].tolist())  bar.add_yaxis('用時',path_data['time'].tolist())  bar.add_yaxis('距離',path_data['distance'].tolist())  

讓我們一句一句研究程式碼。第一句,函數為add_xaxis(),就是添加x軸數據,給x軸添加什麼數據呢?Path_data中的『出發時間』這一列數據。

在這個位置我們要注意,劃重點,一定要注意,在後面加上.tolist()

因為path_data是最開始讀取csv文件的,裡面的數據儲存形式和csv形式保持一致,所以我們要把她轉化為python中列表的形式,即使用.tolist這個函數,否則的話在這個位置添加x軸值是不起任何作用的。

現在有了第一句的基礎,理解第二句就不困難了,但是x軸和y軸的賦值形式任然有一些差別,這是為什麼呢?

其實這是給我們賦的y值起一個名字,當然這個位置不起名字也可以,但是如果如果你有多個y值的時候就會產生意思分歧。

這是啥意思?看下面的圖就知道了。

Pyecharts是支援使用多個y值的。

比如這個圖裡面,我們就使用了商家A商家B兩個y值名稱,為了便於分辨,所以我的建議是取一個名字。

在最後,x值賦好了,y值賦好了,輸入程式碼。

bar.render()  

即可在當前python文件所在的目錄下面看到一個html文件,點進去就可以看到我們所製作的圖表了。

當然括弧裡面還可以填生成文件的名字和生成的地址,這些都是可以修改的。

因為當前我們只需要生成這一個文件,當前目錄下也沒有別的render文件,所以我們就省略了這個步驟。

現在回到我們當前的文件,打開新生成的文件,就可以看到我們剛剛做的圖表啦。

剛剛生成的圖

但是,大家看到自己的圖表是不是感覺有一點空蕩蕩的,不夠酷炫?

不要著急,繼續往下面看,我們還有進階教程~

加點更炫的

想要使用更加酷炫的功能,我們需要再加入兩個模組。

from pyecharts import options as opts  # 導入配置模組  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()函數是給這個圖表設置一些初始參數,比如說背景的顏色,解析度等等的。

想設置主題色就用以下程式碼。

theme=themeType.xxxx  

這個xxx就是主題的顏色,我在這裡寫的是紫色,當然還有其他的顏色,看客老爺可以自己去官網進行了解。後面解析度的參數看客老爺可以根據自己需要進行調整。

這些是在建立圖表的時候進行的一些配置,那麼在輸入數據以後,我們可以進行哪些步驟?

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函數進行我們所需要的個性化設置。

比如說主標題啊,副標題啊,x值的旋轉角度啊,是否有滑塊,等等配置。那實例給大家舉一下例子看看這些具體指的什麼。

主副標題

在這個圖表中左上角的就是我的主標題,下面的就是我的副標題。

x值的旋轉角度

X值傾斜的角度我們在這個圖片里也可以很清晰的看出來,當前旋轉的角度是60度,這個角度的旋轉範圍是-90°到90°。

滑塊功能

滑塊就在最下面,那個可以滑動的東西。

因為有的時候可能數據太多,放在一個頁面里看起來太擁擠,這是我們可以用滑塊這個功能,使得我們的圖形更加分散,便於觀察。

最終的效果

寫在最後

當然,關於pyecharts的使用實例還有很多很多,各位看客老爺如果有興趣可以自己去pyecharts的官網進行學習,這個項目是百度研發的,官網是中文的,還有十分詳細的教程免費提供,所以小瑋在這裡就不多說了。

在這個位置,我們已經完成了數據的爬取和做成圖表。

當然,這和老師吩咐的任務完成還有一定的距離,我們沒有統計時間,因為最近由於肺炎,道路沒有發生擁堵,統計時間發現並沒有明顯的變化,最終結果趨於一根平行x軸的直線。

所以就不在這裡講解時間的統計和回歸分析的步驟了。等一切恢復正常了以後,會專門再寫一篇推文介紹。

最近的肺炎如此嚴重,各位看客老爺們一定要注意防護!

跟著小瑋,帶你一步一步走進數據結構和爬蟲的世界。

程式碼可以在後台回復 PC02 獲取