Python利用Plotly实现对MySQL中的数据可视化

Mysql表数据:

demo.sql内容

create table demo(
 id int
,product varchar(50)
,price decimal(18,2)
,quantity int
,amount decimal(18,2)
,orderdate datetime
);
insert into demo
select 1,'AAA',15.2,5,76,'2017-09-09' union all
select 2,'BBB',10,6,60,'2016-05-18' union all
select 3,'CCC',21,11,231,'2014-07-11' union all
select 4,'DDD',55,2,110,'2016-12-24' union all
select 5,'EEE',20,4,80,'2017-02-08' union all
select 6,'FFF',45,2,90,'2016-08-19' union all
select 7,'GGG',33,5,165,'2017-10-11' union all
select 8,'HHH',5,40,200,'2014-08-30' union all
select 9,'III',3,20,60,'2015-02-25' union all
select 10,'JJJ',10,15,150,'2015-11-02';

 

实现效果如下:

 

Python代码:

 1 import pymysql
 2 import pandas as pd
 3 import plotly.plotly
 4 import plotly.graph_objs as pg
 5 
 6 
 7 def bar_chart(host, port, user, passwd, dbname, charset,output_path):
 8     try:
 9         conn = pymysql.Connection(
10             host=host,
11             port=port,
12             user=user,
13             passwd=passwd,
14             db=dbname,
15             charset=charset
16         )
17         cur = conn.cursor()
18         cur.execute("select * from demo;")
19         # cursor对象使用MySQL查询字符串执行查询,返回一个包含多个元组的元组——每行对应一个元组
20         rows = cur.fetchall()
21         # print(rows)
22 
23         # 使用Pandas的DataFrame来处理每一行要比使用一个包含元组的元组方便
24         # 下面的Python代码片段将所有行转化为DataFrame实例
25         df = pd.DataFrame([[ij for ij in i] for i in rows])
26         print(df)
27         df.rename(columns={0: 'id', 1: 'product', 2: 'price', 3: 'quantity', 4: 'amount', 5: 'orderdate'}, inplace=True)
28         # df = df.sort(['LifeExpectancy'], ascending=[1])
29 
30         date_price = pg.Bar(x=df["product"], y=df["price"], name='价格')
31         date_quantity = pg.Bar(x=df["product"], y=df["quantity"], name='数量')
32         date_amount = pg.Bar(x=df["product"], y=df["amount"], name='总价')
33         data = [date_price, date_quantity, date_amount]
34 
35         layout = pg.Layout(barmode='group', title="各产品销售情况")
36         fig = pg.Figure(data=data, layout=layout)
37         plotly.offline.plot(fig, filename=output_path)
38 
39     finally:
40         if conn:
41             conn.close()
42 
43 
44 if __name__ == '__main__':
45     output_path = "C:/Users/fuqia/Desktop/bar.html"
46     bar_chart("localhost", 3306, "root", "123456", "test", "utf8", output_path)

 

 输出df内容如下:

转载于:https://www.cnblogs.com/fuqia/p/8998290.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值