目录
前言
pyecharts
是一个基于 Python 的数据可视化库,它是 echarts
的 Python 封装。echarts
是一个由百度开发的基于 JavaScript 的数据可视化库,它提供了丰富的图表类型和交互功能,可以帮助用户快速地创建交互式的数据可视化图表。
同时pyecharts
提供了一系列的 Python 接口,可以方便地使用 echarts
的功能来创建各种类型的图表,包括折线图、柱状图、散点图、地图等。与其他 Python 数据可视化库相比,pyecharts
的优势在于它可以直接生成 JavaScript 代码,从而实现了与 echarts
的完全兼容。所有总的来说,pyecharts适合可视的初学者,虽然它在开视化大屏上的效果和功能远远比不上Echarts那么强大,但它的图形更加的简单,容易修改。同时在实现动态展示的功能上,更加的简单易上手!
下面我将利用pyecharts中的时间轴组件来实现动态柱形图。
1.数据预处理
1.1数据准备和重复值统计
数据来源于IT桔子网站的千里马公司数据,使用八爪鱼工具爬取,总共930多条,基本数据信息如下:
由于数据使用的是八爪鱼工具爬取,在八爪鱼保到本地之前就进行了去重处理,因此小编使用的数据不存在重复值,因此没有进行重复值删除。如果有需要可以使用下面的代码去重
data.drop_duplicates(subset=['列名1','列名2'],keep='first')
1.2缺失值统计
使用以下代码查看缺失值情况。
可以看到,各个列的缺失值为0。
data.isnull().sum()
2.数据加工
这里我们需要得到2014年到2023年之间,各个领域的新上榜公司总数。因此,这里要对上榜时间进行加工,获取到年份。
为了得到柱形图能够接收的数据,我们还需要把DataFrame表格中的数据加工成序列,再把序列转换为python的列表list。
data是表格,query()函数实现更加我们的年份列查询对应年份的表格数据。
query()函数后面跟着["企业类型"]是因为我们只需要企业类型这个列,并且后面以它作为索引,统计出相同企业类型总数作为值。这里重点提醒,一定要确定它们两的关系,不然后面我们无法提取出数据。
values_counts()函数实现统计相同企业类型的数量。
sort_values()函数实现对序列进行排序。后面实现的柱形图需要进行排序。
data.query("年份=='2021'")["企业类型"].value_counts().sort_values()
3柱形图时间轴搭建
3.1定义一个函数实现对应年份的柱形图
直接上代码:
def sumRas(year):
from pyecharts import options as opts
from pyecharts.charts import Bar, Timeline
from pyecharts.faker import Faker
x1 = data.query(f"年份=='{year}'")["企业类型"].value_counts().sort_values() # 加工出
y2=x1.values.tolist()
bar = (
Bar()
.add_xaxis(x1.index.tolist())
.add_yaxis("不同企业类型新兴企业总数", y2, label_opts=opts.LabelOpts(position="right") # 设置反转
,color='#00BFFF')
.reversal_axis()
.set_global_opts(
title_opts=opts.TitleOpts("不同年份企业类型bra图 (时间: {} 年)".format(i))
)
)
return bar
代码中:x1.index.tolist()这里就是我们为什么要确定索引和值的对应列。提取出x1序列中的索引也就是企业类型作为x轴的数据。提取出x1序列中的值作为y轴的数据。同时tolist()函数实现序列转换为列表。不然可能数据不能成功展示。
这里我分享用的柱形图源码:https://gallery.pyecharts.org/#/Timeline/timeline_bar
3.2定义柱形图时间轴组件
废话不多说直接上码
from pyecharts import options as opts
from pyecharts.charts import Bar, Timeline
from pyecharts.options import LabelOpts
from pyecharts.globals import ThemeType
tl = Timeline({"theme": ThemeType.CHALK}) # 设置主题
# 设置自动播放
tl.add_schema(
play_interval= 1500, # 播放间隔设置为1.5秒
is_timeline_show=True, # 是否显示时间线
is_auto_play=True, # 是否自动播放
is_loop_play=True, # 是否循环播放
)
for i in range(2014, 2024):
b = sumRas(i)
tl.add(b, "{}年".format(i))
tl.render_notebook()
tl = Timeline({"theme": ThemeType.CHALK}) 这里定义一个时间轴组件
使用tl.add()把柱形图添加到时间轴组件里面。
因此我们需要使用一个for循环,循环调用我们上面调用的shumRas()函数,函数传入年份,返回我们需要的定义年份柱形图。
4.图形展示
视频1
源码可自取: