用Python代码作可视化,如果每次都在代码中以列表的形式来一个一个字符地敲,无异乎浪费时间。我们都知道,在Excel中,数据是以DataFrame(一维的Series是特殊的DataFrame)形式作存储的,而我们在代码中输入的形式一般都是手工地以list的形式来输入。有没有什么快捷的方式呢?
今天下午随意上网搜索了一下“Python 柱形图”,就发现了这篇文章(https://www.cnblogs.com/hhh188764/p/13213299.html)。经过参考,自己略作修改,于是有了这篇文章。
具体如下:
1. 先从Excel中加载数据:
# 加载数据
import pandas as pd
df = pd.read_excel(r"D:\我的文档\MySQL.xlsx", sheet_name = 1)
df
2. 简单地做一下数据清洗:
# 按 num 字段排降序
df.sort_values(by = "num",ascending = False)
3. 做可视化输出
3.1 绘制一个单系列的柱形图,简单对比一下各种水果单品的销售(数量)状况
from pyecharts.charts import Bar
from pyecharts import options as opts
c = (
#创建柱图对象,并设置大小,也可以不设置,直接使用默认大小即可
Bar(init_opts=opts.InitOpts(width="700px", height="500px"))
#设置X轴数据系列,只取前10个数据,并转为列表格式
.add_xaxis(df.goods[:10].tolist())
#设置Y轴数据系列及显示颜色,只取前10个数据,并转为列表格式
.add_yaxis("销售数量", df.num[:10].tolist())
# 设置图表标题及位置
.set_global_opts(title_opts=opts.TitleOpts(title="TOP10水果大单品的销售数量",pos_left="left"))
#通过render()方法将柱图在Web中渲染为html
# .render("柱形图.html")
)
# 直接在notebook中作渲染
c.render_notebook()
渲染效果:
3.2 绘制一个多数据系列的柱形图,以便对比观察分析各种水果的销售金额&销售数量
# 绘制的多数据系列柱形图效果是这样的:
from pyecharts.charts import Bar
from pyecharts import options as opts
c = (
#创建柱图对象,并设置大小,也可以不设置,直接使用默认大小即可
Bar(init_opts=opts.InitOpts(width="900px", height="500px"))
#设置X轴数据系列,只取前10个数据,并转为列表格式
.add_xaxis(df.goods[:10].tolist())
#设置Y轴数据系列及显示颜色,只取前10个数据,并转为列表格式
.add_yaxis("销售金额", df.money[:10].tolist())
.add_yaxis("销售数量", df.num[:10].tolist())
# 设置图表标题及位置
.set_global_opts(title_opts=opts.TitleOpts(title="TOP10水果大单品的销售业绩",pos_left="left"))
#通过render()方法将柱图在Web中渲染为html
# .render("柱形图.html")
)
# 直接在notebook中作渲染
c.render_notebook()
渲染效果:
3.3 给柱形图换颜色 color = "RGB值/十六进制颜色码/形象色/英文首字母缩写"
from pyecharts.charts import Bar
from pyecharts import options as opts
c = (
#创建柱图对象,并设置大小,也可以不设置,直接使用默认大小即可
Bar(init_opts=opts.InitOpts(width="700px", height="500px"))
#设置X轴数据系列,只取前10个数据,并转为列表格式
.add_xaxis(df.goods[:10].tolist())
#设置Y轴数据系列及显示颜色,只取前10个数据,并转为列表格式
.add_yaxis("销售数量", df.num[:10].tolist(), color = "RGB(0, 0, 255)")
# 设置图表标题及位置
.set_global_opts(title_opts=opts.TitleOpts(title="TOP10水果大单品的销售数量",pos_left="left"))
#通过render()方法将柱图在Web中渲染为html
# .render("柱形图.html")
)
# 直接在notebook中作渲染
c.render_notebook()
渲染效果:
小结:
1. 以后再也不用在代码中一个一个敲到手累了;
2. 大概今年四五月份,在我的好友“严小样儿”的微信公众号“统计与数据分析实战”见过将DataFrame转List的方法,但因为当时只是Pyecharts的小白(也是第一次在此公众号认识到pyecharts这个库,并被它的视觉冲击性给迷住,从此就在pyecharts的路上越走越远的)。只顾着囫囵吞枣地多学几个可以装X的炫酷图表,而没有细究其原理,所以基础没有真正地打扎实。这点以后确实需要注意改善!
来源:oschina
链接:https://my.oschina.net/u/3750423/blog/4742579