在Python中对MySQL中的数据进行可视化

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

本教程的所有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
2
3
mysql>  CREATE  DATABASE  world;
mysql> USE world;
mysql> SOURCE /home/ubuntu/world.sql;

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


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

第2步:使用Python连接MySQL

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

1
2
shell>  sudo  apt-get  install  python-dev
shell>  sudo  apt-get  install  libmysqlclient-dev

然后安装Python的MySQLdb包:

1
shell>  sudo  pip  install  MySQL-python

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

1
2
shell> python
>>>  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
>>> cursor.execute( 'select Name, Continent, Population, LifeExpectancy, GNP from Country' );
>>> 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
>>>  import  pandas as pd
>>> df  =  pd.DataFrame( [[ij  for  ij  in  i]  for  in  rows] )
>>> df.rename(columns = { 0 'Name' 1 'Continent' 2 'Population' 3 'LifeExpectancy' 4 : 'GNP' }, inplace = True );
>>> 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
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中。下面是作为一个iframe嵌入的结果图:

0?tp=webp&wxfrom=5

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

0?tp=webp&wxfrom=5

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










本文转自 chengxuyonghu 51CTO博客,原文链接:http://blog.51cto.com/6226001001/1623312,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
30天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
7天前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
24天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
167 15
|
26天前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
151 7
|
28天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
2月前
|
存储 数据可视化 数据挖掘
使用Python进行数据分析和可视化
本文将引导你理解如何使用Python进行数据分析和可视化。我们将从基础的数据结构开始,逐步深入到数据处理和分析的方法,最后通过实际的代码示例来展示如何创建直观的数据可视化。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。让我们一起探索数据的世界,发现隐藏在数字背后的故事!
|
2月前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
62 3
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析和可视化
【10月更文挑战第42天】本文将介绍如何使用Python进行数据分析和可视化。我们将从数据导入、清洗、探索性分析、建模预测,以及结果的可视化展示等方面展开讲解。通过这篇文章,你将了解到Python在数据处理和分析中的强大功能,以及如何利用这些工具来提升你的工作效率。
|
2月前
|
数据可视化 搜索推荐 Shell
Python与Plotly:B站每周必看榜单的可视化解决方案
Python与Plotly:B站每周必看榜单的可视化解决方案
|
2月前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
89 0