楼主: 我的素质低
3539 3

[Python] 〖移花接木〗在Python中对MySQL中的数据进行可视化 [推广有奖]

已卖:2774份资源

学术权威

83%

还不是VIP/贵宾

-

TA的文库  其他...

〖素质文库〗

结构方程模型

考研资料库

威望
8
论坛币
23391 个
通用积分
28308.6707
学术水平
2705 点
热心指数
2881 点
信用等级
2398 点
经验
228216 点
帖子
2968
精华
52
在线时间
2175 小时
注册时间
2012-11-24
最后登录
2024-1-13

一级伯乐勋章 初级学术勋章 初级热心勋章 初级信用勋章 中级热心勋章 中级学术勋章 中级信用勋章 高级学术勋章 高级热心勋章 高级信用勋章 特级学术勋章

楼主
我的素质低 学生认证  发表于 2015-3-25 22:26:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

      本教程的所有Python代码可以在网上的IPython notebook中获取。

      考虑在公司里使用Plotly?可以看一下Plotly的on-premises企业版。(注:On-premises是指软件运行在工作场所或公司内部,详见维基百科

      注意操作系统:尽管Windows或Mac用户也可以跟随本文操作,但本文假定你使用的是Ubuntu系统(Ubuntu桌面版或Ubuntu服务器版)。如果你没有Ubuntu Server,你可以通过Amazon的Web服务建立一个云平台(阅读这份教程的前半部分)。如果你用的是Mac,我们推荐你购买并下载VMware Fusion,在上面安装Ubuntu桌面版。你也可以通过Zareason购买一台便宜的预装Ubuntu桌面版/服务器版的笔记本或服务器。

      使用Python读取MySQL的数据并绘图很简单,所有你需要的工具都可以免费下载。本文会展示怎么做。如果你遇到问题或者卡住了,可以给feedback@plot.ly发送邮件,也可以在本文下面评论,或者在tweeter上@plotlygraphs。


      第1步:确保MySQL已安装且在运行

      首先,你需要有一台安装了MySQL的计算机或服务器。你可以通过以下方法检查MySQL是否安装:打开控制台,输入“mysql”,如果你收到MySQL无法连接的错误,这意味着MySQL安装了,但是没有运行。在命令行或“Terminal”中,尝试输入sudo /etc/init.d/mysql start并按回车来启动MySQL。

     如果MySQL没有安装,不要失望。在Ubuntu中下载并安装只需一行命令:

  1. shell> sudo apt-get install mysql-server --fix-missing
复制代码




    安装过程中会让你输入一个密码。安装结束后,你可以在终端中键入以下命令进入MySQL控制台:

  1. shell> sudo mysql -uroot -p
复制代码



     输入“exit”就可以退出MySQL控制台,。

     本教程使用MySQL经典的“world”样例数据库。如果你想跟随我们的步骤,可以在MySQL文档中心下载world数据库。你也可以在命令行中使用wget下载:

  1. shell> wget http://downloads.mysql.com/docs/world.sql.zip
复制代码


然后解压文件:


  1. shell> unzip world.sql.zip
复制代码



(如果unzip没有安装,输入sudo apt-get install unzip安装)

现在需要把world数据库导入到MySQL,启动MySQL控制台:

  1. shell> sudo mysql -uroot -p
复制代码


进入控制台后,通过以下MySQL命令使用world.sql文件创建world数据库:
  1. mysql> CREATE DATABASE world;
  2. mysql> USE world;
  3. mysql> SOURCE /home/ubuntu/world.sql;
复制代码


(在上面的SOURCE命令中,确保将路径改为你自己world.sql所在目录)。


上述操作说明摘自MySQL文档中心



第2步:使用Python连接MySQL



使用Python连接MySQL很简单。关键得安装python的MySQLdb包。首先需要安装两项依赖:


  1. shell> sudo apt-get install python-dev
  2. shell> sudo apt-get install libmysqlclient-dev
复制代码




然后安装Python的MySQLdb包:

  1. shell> sudo pip install MySQL-python
复制代码


现在,启动Python并导入MySQLdb。你可以在命令行或者IPython notebook中执行:

  1. shell> python
  2. >>> import MySQLdb
复制代码


创建MySQL中world数据库的连接:

  1. >>> conn =MySQLdb.connect(host="localhost", user="root", passwd="XXXX", db="world")
复制代码

cursor是用来创建MySQL请求的对象。

  1. >>> cursor = conn.cursor()
复制代码


我们将在Country表中执行查询。


第3步:Python中执行MySQL查询



       cursor对象使用MySQL查询字符串执行查询,返回一个包含多个元组的元组——每行对应一个元组。如果你刚接触MySQL语法和命令,在线的MySQL参考手册是一个很不错的学习资源。

1
2

  1. >>> cursor.execute('select Name, Continent, Population, LifeExpectancy, GNP from Country');
  2. >>> rows = cursor.fetchall()
复制代码



     rows,也就是查询的结果,是一个包含多个元组的元组,像下面这样: ((‘Aruba’, ‘North America’, 103000L, 78.4, 828.0), (‘Afghanistan’, ‘Asia’, 22720000L, 45.9, 5976.0), (‘Angola’, ‘Africa’, 12878000L, 38.3, 6648.0), (‘Anguilla’, ‘North America’, 8000L, 76.1, 63.2) …


     其中的每个元组对应一行。绘成表格,看起来是像下面这样的:

NAME

CONTINENT

POPULATION

LIFEEXPECTANCY

GNP


237

Zambia

Africa

9169000

37.2

3377


143

Mozambique

Africa

19680000

37.5

2891


148

Malawi

Africa

10925000

37.6

1687


238

Zimbabwe

Africa

11669000

37.8

5951


2

Angola

Africa

12878000

38.3

6648

使用Pandas的DataFrame来处理每一行要比使用一个包含元组的元组方便。下面的Python代码片段将所有行转化为DataFrame实例:

1
2
3
4

  1. >>> import pandas as pd
  2. >>> df = pd.DataFrame( [[ij for ij in i] for i in rows] )
  3. >>> df.rename(columns={0: 'Name', 1: 'Continent', 2: 'Population', 3: 'LifeExpectancy', 4:'GNP'}, inplace=True);
  4. >>> df = df.sort(['LifeExpectancy'], ascending=[1]);
复制代码



完整的代码可以参见IPython notebook


第4步:使用Plotly绘制MySQL数据




      现在,MySQL的数据存放在Pandas的DataFrame中,可以轻松地绘图。下面的代码用来绘制国家GNP(国民生产总值)VS平均寿命的图,鼠标悬停的点会显示国家名称。确保你已经下载了Plotly的Python库。如果没有,你可以参考一下它的入门指南

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

  1. import plotly.plotly as py
  2. from plotly.graph_objs import *

  3. trace1 = Scatter(
  4.      x=df['LifeExpectancy'],
  5.      y=df['GNP'],
  6.      text=country_names,
  7.      mode='markers'
  8. )
  9. layout = Layout(
  10.      xaxis=XAxis( title='Life Expectancy' ),
  11.      yaxis=YAxis( type='log', title='GNP' )
  12. )
  13. data = Data([trace1])
  14. fig = Figure(data=data, layout=layout)
  15. py.iplot(fig, filename='world GNP vs life expectancy')
复制代码

       完整的代码在这份IPython notebook中。下面是作为一个iframe嵌入的结果图:

      利用Plotly的Python用户指南中的气泡图教程,我们可以用相同的MySQL数据绘制一幅气泡图,气泡大小表示人口的多少,气泡的颜色代表不同的大洲,鼠标悬停会显示国家名称。下面显示的是作为一个iframe嵌入的气泡图。


创建这个图表以及这个博客中的所有python代码都可以从这个IPython notebook中拷贝。

英文出处:moderndata.plot.ly

文章出处:http://top.jobbole.com/tag/python/

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python MySQL 移花接木 sql 可视化 Windows notebook 笔记本 服务器 云平台

已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
niuniuyiwan + 100 + 100 + 5 + 5 + 5 精彩帖子

总评分: 经验 + 100  论坛币 + 100  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

本帖被以下文库推荐

心晴的时候,雨也是晴;心雨的时候,晴也是雨!
扣扣:407117636,欢迎一块儿吐槽!!

沙发
q41563201 发表于 2015-3-26 11:06:01
很不错

藤椅
zouzhebuting 发表于 2015-3-26 22:53:21
太赞了,虽然我还是没能实现我的project,,,, 楼主,怎么连接SQLyog啊

板凳
niuniuyiwan 在职认证  发表于 2015-11-4 09:12:39 来自手机
好帖,感谢分享。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-9 08:59