利用Python繪制MySQL數(shù)據(jù)圖實(shí)現(xiàn)數(shù)據(jù)可視化
本教程的所有Python代碼可以在網(wǎng)上的IPython notebook中獲取。
考慮在公司里使用Plotly?可以看一下Plotly的on-premises企業(yè)版。(注:On-premises是指軟件運(yùn)行在工作場(chǎng)所或公司內(nèi)部,詳見(jiàn)維基百科)
注意操作系統(tǒng):盡管Windows或Mac用戶也可以跟隨本文操作,但本文假定你使用的是Ubuntu系統(tǒng)(Ubuntu桌面版或Ubuntu服務(wù)器版)。如果你沒(méi)有Ubuntu Server,你可以通過(guò)Amazon的Web服務(wù)建立一個(gè)云平臺(tái)(閱讀這份教程的前半部分)。如果你用的是Mac,我們推薦你購(gòu)買(mǎi)并下載VMware Fusion,在上面安裝Ubuntu桌面版。你也可以通過(guò)Zareason購(gòu)買(mǎi)一臺(tái)便宜的預(yù)裝Ubuntu桌面版/服務(wù)器版的筆記本或服務(wù)器。
使用Python讀取MySQL的數(shù)據(jù)并繪圖很簡(jiǎn)單,所有你需要的工具都可以免費(fèi)下載。本文會(huì)展示怎么做。如果你遇到問(wèn)題或者卡住了,可以給feedback@plot.ly發(fā)送郵件,也可以在本文下面評(píng)論,或者在tweeter上@plotlygraphs。
第1步:確保MySQL已安裝且在運(yùn)行
首先,你需要有一臺(tái)安裝了MySQL的計(jì)算機(jī)或服務(wù)器。你可以通過(guò)以下方法檢查MySQL是否安裝:打開(kāi)控制臺(tái),輸入“mysql”,如果你收到MySQL無(wú)法連接的錯(cuò)誤,這意味著MySQL安裝了,但是沒(méi)有運(yùn)行。在命令行或“Terminal”中,嘗試輸入sudo /etc/init.d/mysql start并按回車來(lái)啟動(dòng)MySQL。
如果MySQL沒(méi)有安裝,不要失望。在Ubuntu中下載并安裝只需一行命令:
shell> sudo apt-get install mysql-server --fix-missing
安裝過(guò)程中會(huì)讓你輸入一個(gè)密碼。安裝結(jié)束后,你可以在終端中鍵入以下命令進(jìn)入MySQL控制臺(tái):
shell> sudo mysql -uroot -p
輸入“exit”就可以退出MySQL控制臺(tái),。
本教程使用MySQL經(jīng)典的“world”樣例數(shù)據(jù)庫(kù)。如果你想跟隨我們的步驟,可以在MySQL文檔中心下載world數(shù)據(jù)庫(kù)。你也可以在命令行中使用wget下載:
shell> wget http://downloads.mysql.com/docs/world.sql.zip
然后解壓文件:
shell> unzip world.sql.zip
(如果unzip沒(méi)有安裝,輸入sudo apt-get install unzip安裝)
現(xiàn)在需要把world數(shù)據(jù)庫(kù)導(dǎo)入到MySQL,啟動(dòng)MySQL控制臺(tái):
shell> sudo mysql -uroot -p
進(jìn)入控制臺(tái)后,通過(guò)以下MySQL命令使用world.sql文件創(chuàng)建world數(shù)據(jù)庫(kù):
mysql> CREATE DATABASE world; mysql> USE world; mysql> SOURCE /home/ubuntu/world.sql;
(在上面的SOURCE命令中,確保將路徑改為你自己world.sql所在目錄)。
上述操作說(shuō)明摘自MySQL文檔中心。
第2步:使用Python連接MySQL
使用Python連接MySQL很簡(jiǎn)單。關(guān)鍵得安裝python的MySQLdb包。首先需要安裝兩項(xiàng)依賴:
shell> sudo apt-get install python-dev shell> sudo apt-get install libmysqlclient-dev
然后安裝Python的MySQLdb包:
shell> sudo pip install MySQL-python
現(xiàn)在,啟動(dòng)Python并導(dǎo)入MySQLdb。你可以在命令行或者IPython notebook中執(zhí)行:
shell> python >>> import MySQLdb
創(chuàng)建MySQL中world數(shù)據(jù)庫(kù)的連接:
>>> conn = MySQLdb.connect(host="localhost", user="root", passwd="XXXX", db="world")
cursor是用來(lái)創(chuàng)建MySQL請(qǐng)求的對(duì)象。
>>> cursor = conn.cursor()
我們將在Country表中執(zhí)行查詢。
第3步:Python中執(zhí)行MySQL查詢
cursor對(duì)象使用MySQL查詢字符串執(zhí)行查詢,返回一個(gè)包含多個(gè)元組的元組——每行對(duì)應(yīng)一個(gè)元組。如果你剛接觸MySQL語(yǔ)法和命令,在線的MySQL參考手冊(cè)是一個(gè)很不錯(cuò)的學(xué)習(xí)資源。
>>> cursor.execute('select Name, Continent, Population, LifeExpectancy, GNP from Country');
>>> rows = cursor.fetchall()
rows,也就是查詢的結(jié)果,是一個(gè)包含多個(gè)元組的元組,像下面這樣:

使用Pandas的DataFrame來(lái)處理每一行要比使用一個(gè)包含元組的元組方便。下面的Python代碼片段將所有行轉(zhuǎn)化為DataFrame實(shí)例:
>>> import pandas as pd
>>> df = pd.DataFrame( [[ij for ij in i] for i in rows] )
>>> df.rename(columns={0: 'Name', 1: 'Continent', 2: 'Population', 3: 'LifeExpectancy', 4:'GNP'}, inplace=True);
>>> df = df.sort(['LifeExpectancy'], ascending=[1]);
完整的代碼可以參見(jiàn)IPython notebook
第4步:使用Plotly繪制MySQL數(shù)據(jù)
現(xiàn)在,MySQL的數(shù)據(jù)存放在Pandas的DataFrame中,可以輕松地繪圖。下面的代碼用來(lái)繪制國(guó)家GNP(國(guó)民生產(chǎn)總值)VS平均壽命的圖,鼠標(biāo)懸停的點(diǎn)會(huì)顯示國(guó)家名稱。確保你已經(jīng)下載了Plotly的Python庫(kù)。如果沒(méi)有,你可以參考一下它的入門(mén)指南。
import plotly.plotly as py from plotly.graph_objs import * trace1 = Scatter( x=df['LifeExpectancy'], y=df['GNP'], text=country_names, mode='markers' ) layout = Layout( xaxis=XAxis( title='Life Expectancy' ), yaxis=YAxis( type='log', title='GNP' ) ) data = Data([trace1]) fig = Figure(data=data, layout=layout) py.iplot(fig, filename='world GNP vs life expectancy')
完整的代碼在這份IPython notebook中。下面是作為一個(gè)iframe嵌入的結(jié)果圖:

利用Plotly的Python用戶指南中的氣泡圖教程,我們可以用相同的MySQL數(shù)據(jù)繪制一幅氣泡圖,氣泡大小表示人口的多少,氣泡的顏色代表不同的大洲,鼠標(biāo)懸停會(huì)顯示國(guó)家名稱。下面顯示的是作為一個(gè)iframe嵌入的氣泡圖。

創(chuàng)建這個(gè)圖表以及這個(gè)博客中的所有python代碼都可以從這個(gè)IPython notebook中拷貝。
- 利用Python進(jìn)行數(shù)據(jù)可視化常見(jiàn)的9種方法!超實(shí)用!
- Python數(shù)據(jù)可視化 pyecharts實(shí)現(xiàn)各種統(tǒng)計(jì)圖表過(guò)程詳解
- python使用pyecharts庫(kù)畫(huà)地圖數(shù)據(jù)可視化的實(shí)現(xiàn)
- 利用Python代碼實(shí)現(xiàn)數(shù)據(jù)可視化的5種方法詳解
- Python數(shù)據(jù)可視化庫(kù)seaborn的使用總結(jié)
- Python數(shù)據(jù)可視化:箱線圖多種庫(kù)畫(huà)法
- python如何爬取網(wǎng)站數(shù)據(jù)并進(jìn)行數(shù)據(jù)可視化
- Python數(shù)據(jù)可視化之畫(huà)圖
- Python數(shù)據(jù)分析:手把手教你用Pandas生成可視化圖表的教程
- 利用Python進(jìn)行數(shù)據(jù)可視化的實(shí)例代碼
相關(guān)文章
python圖像處理模塊Pillow的學(xué)習(xí)詳解
這篇文章主要介紹了python圖像處理模塊Pillow的學(xué)習(xí)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
python3 實(shí)現(xiàn)驗(yàn)證碼圖片切割的方法
今天小編就為大家分享一篇python3 實(shí)現(xiàn)驗(yàn)證碼圖片切割的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
pyinstaller打包程序后閃退問(wèn)題的解決方法
這篇文章主要給大家介紹了關(guān)于pyinstaller打包程序后閃退問(wèn)題的解決方法,閃退原因可能有很多這里記錄下我遇到的問(wèn)題,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
Django項(xiàng)目基礎(chǔ)配置和基本使用過(guò)程解析
這篇文章主要介紹了Django項(xiàng)目基礎(chǔ)配置和基本使用過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11

