您的位置:首页 > 编程语言 > Python开发

基于Python Plotly 对 MySQL 存储数据的可视化初步

2016-07-28 15:36 891 查看
Pyhon提供强大的可视化工具,除matplotlib外,pandas、seaborn、ggplot、bokeh、pygal、plotly都具有强大的可视功能(http://www.thebigdata.cn/YeJieDongTai/30555.html),根据不同的数据、平台要求选择适当的工具进行可视化能较大程度地展示python的强大功能。个人认为plotly功能强大,且其适合web端的展现,并提供js库,能生产具有交互性的图表,非常值得学习。并且,笔者近日入了MySQL的坑,对于一众diaosi来说,MySQL大部分功能免费,相比于Oracle的昂贵价格和MS
SQL Server根植于MS的特性,MySQL不仅免费,而且开源,模块的改进简单,而且在千万级别数据量时性能并不太亚于MS SQL Server,是一款值得入手的开源数据库软件。本文的目的,就是希望通过Plotly的Python接口,对MySQL数据库中的数据进行可视化。

第一部分: MySQL 与 Python 之间的连接

MySQL 与 Python 之间的连接通过MySQL-python实现。笔者假定终端已经安装好Python2.7及以上,并能基于easy_install 或pip进行第三方库的安装。打开cmd,定位到D:\Program Files(x86)\python2_7_11\Scripts(笔者电脑安装的为python2.7.11),命令行输入pip
install MySQL-python,即可安装这个包。不过,可能会出现一点安装问题,尽管baidu、Stackoverflow、oschina、csdn搜索了一大堆资料,还是未能解决。因此,采用第二大杀器——Python第三方库安装文件集锦(http://www.lfd.uci.edu/~gohlke/pythonlibs/),搜索MySQL-python,根据电脑系统选择对应的安装文件(后缀为.whl)下载,笔者下载的是MySQL_python-1.2.5-cp27-none-win32.whl。在cmd中输入pip
install C:\Users\Liuph\Desktop\MySQL_python-1.2.5-cp27-none-win32.whl,后者为文件路径和文件名。

安装好之后通过import MySQLdb即可实现连接。

第二部分:在Python中调用Plotly包

同理,pip install plotly。安装好之后,需要前往plotly官网(https://plot.ly)注册一个账号并获取秘钥。

在Python中引用,import plotly。当然,可以将plotly的三个模块都加载:

import plotly.plotly as py

import plotly.graph_objs as go

import plot.tools as tls

第三部分:向MySQL中存储数据

本文以简单的数据为例,介绍MySQL创建数据库、数据表和插入数据的方法:

打开cmd,输入mysql -uroot -p,再输入密码,表示以root用户名登录数据库。

创建名为t 的数据库

CREATE DATABESE t; 

SHOW CREATE DATABASE t;可查看数据库t的属性,可以修改数据库的编码,例如ALTER DATABASE t CHARACTER SET utf8;                 

创建关系表

CREATE TABLE score(

id SMALLINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(20) NOT NULL UNIQUE,

gender VARCHAR(10) NOT NULL,

grade SMALLINT UNSIGNED NOT NULL,

ratio FLOAT UNSIGNED NOT NULL

);

SHOW COLUMNS FROM score;可以查看关系表的结构。

插入新的数据记录

INSERT score VALUES (1,'Alen','girl',85,0.68),(2,'Bob','boy',76,0.73),(3,'Cindy','girl',89,0.96),(4,'David','boy',63,0.35),(5,'Frank','boy',83,0.94);

SELECT * FROM score;

以上语句的执行结果如下图所示:



第四部分: 在Python中查询MySQL的数据并调用Plotly进行数据渲染

# -*- coding: utf-8 -*-
# Author: Liuph
# Date: 28 Jul, 2016
# Version: 1.1
import plotly
import plotly.graph_objs
import MySQLdb

#print py.get_credentials()
#tls.set_credentials_file(username='liuph', api_key='jmvqrktxw9')

try:
#连接数据库t
conn = MySQLdb.connect(host="localhost", user="root", passwd="123456", db="t", charset="utf8")
print "Conection success!\n"
cur = conn.cursor()

cur.execute('SELECT gender, grade, ratio FROM score')
rows = cur.fetchall()
x_data = []
y_data = []
gender = []
colors = []
for row in rows:
gender.append(row[0]) #性别
x_data.append(row[1]) #成绩
y_data.append(row[2]) #出席率
if(row[0] == 'boy'): #根据性别设置scatter的颜色
colors.append('rgb(93, 164, 214)')
else:
colors.append('rgb(255, 65, 54)')
data = [
{
'x': x_data,
'y': y_data,
'mode': 'markers',
'marker': {
'color':colors,
'size': x_data
}
}
]
plotly.offline.plot(data, filename='grade_ratio.html') #本地
plotly.plotly.iplot(data, filename='g_r') #上传至web
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
结果图:



同时,在http://plot.ly的my chart中,新建图表和数据已上传。

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息