pyecharts运用——对数据进行可视化处理

2023-10-30

pyecharts运用——对数据进行可视化处理


正文:

前言

本博客记录这学期关于数据可视化的一些学习,由于我是一个菜鸟,编程能力很弱,希望路过的大佬多多海涵。

一、为什么要数据可视化?

引用知乎的一段话来展开:

(1)我们利用视觉获取的信息量,远远比别的感官要多的多。
(2)它能够帮助分析的人对数据有更全面的认识。
(3)人类大脑在记忆能力的限制。

数据可视化的根本目的就是教会我们如何去分析一段数据,并让非专业的人士也能了解到这段数据所要表达的意思,且可以从数据中挖掘出更多有用的信息。

二、python可视化神器——pyecharts库

2.1 pyecharts 是为了与 Python 进行对接,方便在 Python 中直接使用数据生成图。

2.1 .1先做准备工作,导入自己后续需要用到的库;如果你是一名新手,没有pandas、pyecharts这两个模块;就需要在cmd命令窗口或Anaconda Prompt窗口输入以下命令:

pip install pandas

pip install pyecharts

安装成功之后运行以下代码,就能显示成功。
所需要导入的库

opts:用于设置图表的各种属性和配置项。opts对象是pyecharts中非常重要的一个概念,可以用于设置图表的样式、数据、标签、坐标轴、背景等各种属性,从而使得图表能够更加地符合用户的需求。
Grid:是一个用于布局多个图表的容器。Grid 可以将多个图表排列在一起,使它们在同一个页面上展示,并具有良好的视觉效果。
pandas:是一个数据处理库,提供了丰富的数据结构和函数,用于处理和分析结构化数据。pandas 可以读取和写入各种数据格式,如 CSV、Excel、SQL 数据库、HTML、JSON 等,并提供了数据清洗、数据转换、数据分组、数据透视、数据聚合等常用操作。

部分代码代码示例:

from pyecharts import options as opts
from pyecharts.charts import Bar, Line,Grid,Tab
import pandas as pd
from pyecharts.faker import Faker

三、获取数据

利用pandas库中的方法获取指定文件指定工作表中的全部数据,其数据是一个列表形式。

注意: 这里的 ’MPV销量数据.xlsx‘ 文件使用的是相对路径,因此要与当前写的代码文件是在同一路径下,才能获取到数据;当然也可以使用绝对路径来获取表格数据文件,这里我就不做演示了。
插入数据

data=pd.read_excel('MPV销量数据.xlsx')
data

在画图时,我们需要根据采集时间绘制图形,所以需要按时间筛选后,构造成新的表格。使用tolist() 方法筛选日期后构造并进行测试。如图所示。

将时间对象转换成字符串,并提取片段:

提取数据

# x轴数据
x = data['采集时间'].agg(lambda x:str(x)[5:10]).tolist()
x

提取“销量”转换成字符串,作为我们的数据展示:

提取数据

data1=data['销量'].tolist()
data1

四、overlap组件展示销量和增长率的对比图表

构造增长率数据:

对于公司来说,业绩是天大的事,定期都会对业绩进行统计,同时也需要分析业绩的变化情况,这时图表的展现就要以销量和增长率为中心点。

构造增长率

# 构造增长率数据
rate_of_rise = []
for i in range(len(data1)):
    if i==0:
        rate_of_rise.append(0)
    else:
        rate = data1[i]/data1[i-1]-1 # 计算增长率
        rate_of_rise.append((round(rate,3))) # 保留小数点后3位,添加到列表中
rate_of_rise

五、可视化

我们所需要的数据都整理好后,就可以开始制作对比图表,使之更清晰明了的呈现在我们面前。

对比图表
5.1编写可视化函数

部分代码示例:

bar = (
    Bar()
    .add_xaxis(x)
    .add_yaxis("销量", data1)
    .extend_axis( # 添加副坐标轴
        yaxis=opts.AxisOpts(name='增长率',min_=-3) # 配置副坐标轴
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="数据增长率柱形、折线复合图"),
        yaxis_opts=opts.AxisOpts( # 配置主坐标轴
                        name='数值',
                        max_=33333
        ),
    )
)
line = (
    Line()
    .add_xaxis(x)
    .add_yaxis("增长率", 
               rate_of_rise, 
               is_smooth = True,
               yaxis_index=1,
               linestyle_opts = opts.LineStyleOpts(color='pink',
                                                  width=3,
                                                  type_ = 'dashed'
                                                  ),
    )
    .set_series_opts(
        markline_opts=opts.MarkLineOpts(   # 标记副y轴0刻度线,突出增长率的正负属性
            data=[
                {"yAxis": 0},
            ],
            label_opts=opts.LabelOpts(is_show=True),
            linestyle_opts = opts.LineStyleOpts(color='pink',
                                                  width=3,
                                                  type_ = 'dotted',
                                                ),
        )
    )
)
bar.overlap(line) # 调用overlap组件(方法)实现层叠
bar.render_notebook()

六、附:完整代码

代码示例

#导入库
from pyecharts import options as opts
from pyecharts.charts import Bar, Line,Grid,Tab
import pandas as pd
from pyecharts.faker import Faker
 
#导入数据
data=pd.read_excel('MPV销量数据.xlsx')
data
 
#提取数据
# x轴数据
x = data['采集时间'].agg(lambda x:str(x)[5:10]).tolist()
data1=data['销量'].tolist()
 
# 构造增长率数据
rate_of_rise = []
for i in range(len(data1)):
    if i==0:
        rate_of_rise.append(0)
    else:
        rate = data1[i]/data1[i-1]-1 # 计算增长率
        rate_of_rise.append((round(rate,3))) # 保留小数点后3位,添加到列表中
rate_of_rise
 
#overlap组件图形展示
bar = (
    Bar()
    .add_xaxis(x)
    .add_yaxis("销量", data1)
    .extend_axis( # 添加副坐标轴
        yaxis=opts.AxisOpts(name='增长率',min_=-3) # 配置副坐标轴
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="数据增长率柱形、折线复合图"),
        yaxis_opts=opts.AxisOpts( # 配置主坐标轴
                        name='数值',
                        max_=33333
        ),
    )
)
line = (
    Line()
    .add_xaxis(x)
    .add_yaxis("增长率", 
               rate_of_rise, 
               is_smooth = True,
               yaxis_index=1,
               linestyle_opts = opts.LineStyleOpts(color='pink',
                                                  width=3,
                                                  type_ = 'dashed'
                                                  ),
    )
    .set_series_opts(
        markline_opts=opts.MarkLineOpts(   # 标记副y轴0刻度线,突出增长率的正负属性
            data=[
                {"yAxis": 0},
            ],
            label_opts=opts.LabelOpts(is_show=True),
            linestyle_opts = opts.LineStyleOpts(color='pink',
                                                  width=3,
                                                  type_ = 'dotted',
                                                ),
        )
    )
)
bar.overlap(line) # 调用overlap组件(方法)实现层叠
bar.render_notebook()

七、重点!!敲黑板了

配置项,pyecharts的配置项分为,全局配置项,系列配置项

全局配置项:
都是一些大体上的配置,比如图标的大小,工具栏显示等等。

全部写在这里set_global_opts类里面,参数一般是x_opts = opts.XOpts():

系列配置项:
这个配置项主要是针对文字样式、图标样式这些小一点的细节的改变

这些类方法需要写在这里set_series_opts()方法里;
具体教程参考:官网

组合组件(Grid)是 Pyecharts 中非常实用的组件,它可以帮助我们更好地展示多个图表的组合。通过上述示例代码,我们可以快速上手使用overlap,并实现各种不同的数据可视化效果。

以上就是我本人对pyecharts及overlap组件的理解和使用;如有更好的想法和思路,可私信我一起探讨!

八、总结

数据爬取下来后,我们一定希望把它展示出来,本学期系统学习了pyecharts,pyecharts 是一个用于生成 Echarts 图表的类库;能使繁杂的数据变成图表美观、直观的呈现在我们面前。

还有更多类型的图形,这里就不作过多的展示了。感兴趣的小伙伴们可以自己找官网浅学一下,话不多说,快快行动起来吧!
emoji

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pyecharts运用——对数据进行可视化处理 的相关文章

  • 如何在Python中反转列表的列表? [复制]

    这个问题在这里已经有答案了 我想知道如何反转 python 中的列表列表 例如 原来的 list 1 2 3 4 5 6 7 8 9 输出 new list 7 8 9 4 5 6 1 2 3 现在 我正在尝试这样做 new list re
  • 如何进行重定向并保留查询字符串?

    我想进行重定向并保留查询字符串 就像是self redirect加上发送的查询参数 那可能吗 newurl my new route urllib urlencode self request params self redirect ne
  • 如何检查给定的数字是否是2的幂?

    下面的代码不适用于某些输入 a i set 1 while i lt 10000 a add i i lt lt 1 N int input if N in a print True else print False 我最初的想法是检查每个
  • 如何用pygame画一条虚线?

    我需要在坐标系上绘制正弦波和余弦波 就像在this https i stack imgur com DGI8g png图片 除了没能代表以外 我所有的工作都做得很好虚线和曲线与 pygame 一致 我有与我需要的类似的东西 但我怎样才能让它
  • 在Python中,如何通过去掉括号和大括号来打印Json

    我想以一种很好的方式打印 Json 我想去掉方括号 引号和大括号 只使用缩进和行尾来显示 json 的结构 例如 如果我有一个像这样的 Json A A1 1 A2 2 B B1 B11 B111 1 B112 2 B12 B121 1
  • matplotlib - 将文本包装在图例中

    我目前正在尝试绘制一些pandas数据通过matplotlib seaborn 然而我的一个专栏标题特别长 拉长了情节 考虑以下示例 import random import pandas as pd import matplotlib p
  • 按升序对数字字符串列表进行排序

    我创建了一个SQLite https en wikipedia org wiki SQLite数据库有一个存储温度值的表 第一次将温度值按升序写入数据库 然后 我将数据库中的温度值读入列表中 然后将该列表添加到组合框中以选择温度 效果很好
  • 熊猫系列到二维数组

    所以 我使用了来自的答案将二维数组放入 Pandas 系列中 https stackoverflow com questions 38840319 put a 2d array into a pandas series将 2D numpy
  • Flask 和 Reactjs 抛出 JSX 转换错误

    我已经开始将 ReactJS 与 Python Flask 后端结合使用 通过 Flask 渲染模板时 我在 Chrome 控制台中收到以下客户端错误 错误 找不到模块 jstransform visitors es6 templates
  • Python 模块 BeautifulSoup 提取锚点 href

    我正在使用 BeautifulSoup 模块通过以下方式从 html 选择所有 href def extract links html soup BeautifulSoup html anchors soup findAll a print
  • 在添加数据之前使用 Python gdata 清除工作表中的行

    我有一个 Google 电子表格 我使用 python 脚本和 gdata 库填充值 如果我多次运行脚本 它会将新行附加到工作表中 我希望脚本在填充之前首先清除行中的所有数据 这样每次运行时我都会有一组新的数据脚本 我尝试过使用 Updat
  • 使用张量流导出神经网络的权重

    我使用张量流工具编写了神经网络 一切正常 现在我想导出神经网络的最终权重以制定单一的预测方法 我怎样才能做到这一点 您需要在训练结束时使用以下命令保存模型tf train Saver https www tensorflow org ver
  • Python:如何“杀死”类实例/对象?

    我希望 Roach 类在达到一定量的 饥饿 时 死亡 但我不知道如何删除该实例 我的术语可能有误 但我的意思是 窗户上有大量 蟑螂 我希望特定的蟑螂完全消失 我会向您展示代码 但它很长 我将蟑螂类添加到策划者类蟑螂种群列表中 一般来说 每个
  • 根据标签位置计算 Pandas DataFrame 的索引

    我正在尝试计算标签的索引Pandas https pandas pydata org DataFrame在每一列中 基本上我有以下内容DataFrame d col1 label1 label2 label3 col2 label2 lab
  • 从函数在 python 3 中创建全局变量

    我想知道为什么在函数结束后我无法访问变量 variable for raw data 代码是这样的 def htmlfrom Website URL import urllib request response urllib request
  • 为什么我的 Python 散点图不起作用?

    我使用 pylab 创建了一个非常简单的散点图 pylab scatter engineSize fuelMile pylab show 该程序的其余部分不值得发布 因为正是该行给我带来了问题 当我将 散点 更改为 绘图 时 它会绘制数据图
  • 阻止 BeautifulSoup 将我的 XML 标签转换为小写

    我正在使用 BeautifulStoneSoup 来解析 XML 文档并更改一些属性 我注意到它会自动将所有 XML 标签转换为小写 例如我的源文件有
  • 如何使用 Matplotlib 可视化标量二维数据?

    所以我有一个网格网格 矩阵 X 和 Y 以及标量数据 矩阵 Z 我需要将其可视化 最好是一些 2D 图像 在各点处带有颜色 显示 Z 值 我做了一些研究 但没有找到任何能完全满足我想要的效果的东西 pyplot imshow Z 看起来不错
  • Docker Python 脚本找不到文件

    我已经成功构建了一个 Docker 容器 并将应用程序的文件复制到 Dockerfile 中的容器中 但是 我正在尝试执行引用输入文件 在 Docker 构建期间复制到容器中 的 Python 脚本 我似乎无法弄清楚为什么我的脚本告诉我它无
  • python:日志记录:我们可以向记录器添加多个过滤器吗?考虑哪一个

    我试图了解 Python 日志记录中的多个过滤器 一个在配置中定义 另一个在代码中定义 如何工作 我正在开发一个 Django 项目 下面是我在 settings py 中的记录器配置 我的目标是switch on and switch o

随机推荐

  • GCP Monitoring and Dashboarding Multiple Projects from a Single Workspace Lab

    最后更新2022 03 17 这个室验是一个dashboard看多个projects的信息 照例先进console 不同的是同时给了3个projects 记录好哪个用于monitor 哪个是worker1和worker2 具体没区别 但以后
  • 【zookeeper】zookeeper 启动 源码解读

    文章目录 1 概述 2 QuorumPeerMain 3 单机模式 4 集群模式 4 1 createFactory 4 2 getQuorumPeer 4 3 LearnerType 4 4 start 4 4 1 loadDataBas
  • OpenWrt设置.端口转发和远程访问路由器

    到Luci界面 网络 gt 防火墙 首先 先来说下如何设置端口转发 点击上方的 端口转发 新建端口转发 处填写名称 随便 外网端口 内部IP地址 内网端口 图中的设置表示将外网82端口上的TCP数据转发到内网192 168 1 11的80端
  • 【Lua学习】Lesson5.程序的时序、线程及任务同步

    基本时序 先把分析一下上一笔记中的代码 function LedRunning do something sys timerStart LedRunning 200 200ms定时执行此函数 end LedRunning 首先是定义了一个功
  • 各大工作室都在用的视觉特效软件,开启你的虚拟制作之旅

    为您的虚拟制作设置的免费视觉特效工具 使用领先工作室们所信任的创意资源管理软件 免费开始您的下一个虚拟制作项目 花更多时间在创作上 更少时间在设置上 增强型Studio包 现已可以部署在微软 Azure 上使用 包含了您所需要的所有工具 包
  • 超详细教程-Linux服务器安装jenkins

    2 一 步骤目录 1 安装JDK 2 安装Jenkins 3 修改Jenkins配置 4 启动Jenkins 5 服务器开放端口 打开浏览器 6 获取管理员密码 7 自定义Jenkins 8 创建第一个管理员用户 二 具体操作 1 安装JD
  • Postman如何进行参数化

    前言 Postman作为一款接口测试工具 受到了非常多的开发工程师的拥护 那么做为测试 了解Postman这款工具就成了必要的了 这篇文章就是为了解决Postman怎么进行参数化的 全局变量 全局变量是将这个变量设置成整个程序的都可以用 不
  • 暴力枚举、全排列

    1 带分数 题目分析 假设待求的数 num a b c 对于样例1 100 3 69258 714 a 3 b 69258 c 714 我们首先对 123456789 进行全排列 然后对于其中的每个全排列进行分段 比如样例中涉及的排列之一
  • 哔哩哔哩能下游戏?B站游戏下载

    哔哩哔哩不仅可以看视频和社区活动 还可以下载游戏 你知道吗 哔哩哔哩要如何下载游戏呢 本期教程就来教教大家B站游戏下载的方法 哔哩哔哩下载游戏方法教程 1 打开b站之后 点击游戏中心图标 2 进去哔哩哔哩游戏中心之后 点击底部我的 3 在我
  • 使用UmiJS开发项目(上)

    目录 一 Umi是什么 二 项目初始化 三 配置prettier eslint stylelint 四 配置文件 五 多环境多配置文件 前段时间公司重构的项目中选用Umi框架 使用的过程中整理并封装了一些Umi常用的功能 由于文章篇幅较长
  • 解压文件win10自动删除

    解压文件 包含一个破解软件 被win10自动删除 复制也会提示 无法完成操作 因为文件包含病毒或潜在的垃圾软件 解决办法 找到病毒和威胁防护 找到被隔离的威胁 操作允许在设备上即可
  • Java 11 升Java 17 重要特性必读(摘录)

    1 JDK 17 在 2021 年 9 月 14 号正式发布了 根据发布的规划 这次发布的 JDK 17 是一个长期维护的版本 LTS SpingFramework 6 和SpringBoot 3中默认将使用JDK 17 所以JDK 17必
  • vue封装组件之上传图片组件(el-upload)

    vue封装组件之上传图片组件 el upload 未上传状态 上传状态 其他状态 查看 删除 自定义组件文件名称 这里叫UploadImg vue
  • 子串判断

    链接 https www nowcoder com questionTerminal 917a800d4de1423394827932f4725c68 orderByHotValue 1 done 0 pos 10 onlyReferenc
  • 亲身经历提醒大家,工作千万不要太快做完,快了领导就会认为你很能干,把最急、最难的任务分给你!...

    职场上 如何合理把握工作节奏 一位网友用亲身经历提醒大家 上班的时候千万不要搞太快了 搞快了领导就会认为你很能干 分任务的时候 永远把最多 最急 最难 最复杂的业务都交给你 然后别人搞完都下班了 唯独你一个人坐那加班 真是讽刺 许多网友都有
  • JavaScript中的类型详解

    一 JavaScript中的类型 JavaScript中的类型可以分为基本数据类型和引用类型两种 基本类型值 指的是保存在栈内存中的简单数据段 引用类型值 指的是那些保存在堆内存中的对象 意思是 栈内存中保存的实际上只是一个指针 这个指针指
  • 五位杰出的中国女科学家--巾帼不让须眉,见证科技中的“她力量”

    今年一月 英国广播公司 BBC 公布 20世纪最具标志性人物 票选活动 中国首位诺贝尔生理学或医学奖得主屠呦呦与居里夫人 爱因斯坦等一同入围 BBC还专门制作了介绍短片 讲述屠呦呦发现青蒿素的传奇故事 去年也是科研女性表现亮眼的一年 中国科
  • FBX动画导入Unity

    Unity动画 1 1 第一章 Unity导入FBX模型动画但不能动 文章目录 Unity动画 前言 一 FBX模型动画 二 Unity导入后设置参数 1 设置材质 2 设置动画 总结 前言 随着AR VR等技术发展 摸一手Unity动画总
  • 拷贝构造函数和赋值运算符区别

    只有在赋值时 才调用赋值函数 当在声明变量时 B b3 b1和B b4 b3 调用的函数是一样的 均为拷贝构造函数 一 拷贝构造 是一个的对象来初始化一边内存区域 这边内存区域就是你的新对象的内存区域赋值运算 对于一个已经被初始化的对象来进
  • pyecharts运用——对数据进行可视化处理

    pyecharts运用 对数据进行可视化处理 前言 本博客记录这学期关于数据可视化的一些学习 由于我是一个菜鸟 编程能力很弱 希望路过的大佬多多海涵 一 为什么要数据可视化 数据可视化的根本目的就是教会我们如何去分析一段数据 并让非专业的人