用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的炫酷图表,而没有细究其原理,所以基础没有真正地打扎实。这点以后确实需要注意改善!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐