目录

  • pygal模块

    • 安装pygal模块
    • pygal模块介绍
      • 柱状图

        • 单列柱状图
        • 堆叠柱状图
        • 横向柱状图
      • 折线图
        • 简单折线图
        • 纵向折线图
        • 堆叠折线图
      • 饼状图
        • 简单饼状图
        • 多级饼状图
        • 圆环图
        • 半圆图
      • 雷达图
        • 基础雷达图
    • 其他图表介绍
  • 爬取中国福彩网彩票数据并以图表形式显示
    • 网页分析
    • 数据提取
    • 转换数据
    • 将数据转换成图表
    • 完整代码
    • 实现结果

pygal模块

热血小说网 https://www.v1122.com

安装pygal模块

pygal模块的安装非常简单,只需输入一行pip命令即可

pip install pygal

安装完成:

pygal模块介绍

pygal官网地址
pygal是Python的第三方库,他的主要功能就是数据可视化,即将数字转化成图表的形式来呈现,它提供的图表样式有柱状图、折线图、饼状图、雷达图......

柱状图

pygal柱状图官方文档

单列柱状图
import pygalview = pygal.Bar()
#图表名
view.title = '柱状图'
#添加数据
view.add('numbers', [0,2,4,6,8,10])
#在浏览器中查看
#view.render_in_browser()
#保存为view.svg(也可以保存为jpg)
view.render_to_file('view.svg')

效果图:

注意:svg图片用系统自带的图片查看器打开可能会显示全黑色,可以尝试使用Google浏览器打开
多列柱状图

#添加数据
view.add('numbers', [0,2,4,6,8,10])
view.add('numbers_2', [0,1,3,5,7,9])

堆叠柱状图
view = pygal.StackedBar()

横向柱状图
view = pygal.HorizontalStackedBar()

折线图

pygal折线图官方文档

简单折线图
import pygalview = pygal.Line()
#图表名
view.title = '折线图'
#添加数据
view.add('numbers', [0,2,4,6,8,10])
view.add('numbers_2', [0,1,3,5,7,9])
#在浏览器中查看
#view.render_in_browser()
#保存为view.svg(也可以保存为jpg)
view.render_to_file('view.svg')

效果图:

纵向折线图
view = pygal.HorizontalLine()

堆叠折线图
view = pygal.StackedLine(fill=True)

饼状图

pygal饼状图官方文档

简单饼状图
import pygalview = pygal.Pie()
#图表名
view.title = '饼状图'
#添加数据
view.add('A', 31)
view.add('B', 55)
view.add('C', 14)
#保存为view.svg(也可以保存为jpg)
view.render_to_file('view.svg')

效果图:

多级饼状图
#添加数据
view.add('A', [31,25])
view.add('B', [55,38])
view.add('C', [14,37])

圆环图
#设置空心圆半径
view = pygal.Pie(inner_radius=0.4)

半圆图
view = pygal.Pie(half_pie=True)

雷达图

pygal官方文档

基础雷达图
import pygalview = pygal.Radar()
#图表名
view.title = '雷达图'
#添加数据(可以为任意个)
view.add('A', [31,56,34,67,34])
view.add('B', [23,18,57,45,35])
view.add('C', [14,45,76,34,76])
#保存为view.svg(也可以保存为jpg)
view.render_to_file('view.svg')

效果图:

其他图表介绍

直方图
盒子图
圆点图
坐标图
锥形图
环状图
仪表图
塔形图
树图
地图

爬取中国福彩网彩票数据并以图表形式显示

网页分析

首先打开中国福彩网,点击双色球,选择往期开奖栏目
进入栏目后,选定往期的奖金数目作为我们想要爬取的目标内容

明确目标后,开始寻找数据所在的位置
鼠标右击页面,打开网页源代码,在源代码中搜索是否存在奖金金额数目

搜索过后,发现这个金额数据没有在网页的源代码中,所以想到用抓包的方式来尝试获取这些金额数据
右击检查,选择network选项卡,按下ctrl+r键刷新界面,开始捕捉数据包
在过滤掉一些png、jpg的数据包之后,我们锁定了一个以findDrawNotice开头的数据包,打开观察数据包的内容,发现这个正是我们想要抓取的数据包


现在已经找到了想要抓包的内容,现在可以开始着手写代码了

数据提取

我们分析过网页之后,选定了要抓取的数据包,开始使用requests请求来获取数据

url = 'http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice?name=ssq&issueCount=30'
headers = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36","Referer":"http://www.cwl.gov.cn/kjxx/ssq/"}
response = requests.get(url,headers=headers).text

这个网页可能会有一个小的反爬措施,于是我们就在headers中加入user-agent和referer两个头信息
我们使用print语句来打印一下response的内容

print之后会发现这个内容是以字符串的格式打印出来的,如果我们想从中提取数据,则必须将它转换成字典的格式

data_json = json.loads(response)     #将数据转换为json格式

将数据转换之后,我们就可以使用键值对的方式来提取我们想要的数据了

datas = data_json["result"]
for data in datas:prizegrades = data["prizegrades"]          #包含中奖金额的字典提取for item in prizegrades:print(item)typemoney = item['typemoney']        #中奖金额提取print(typemoney)

这里我们尝试着逐层提取彩票的奖金信息,提取到最近的一层时,将数据打印出来分析数据

可以看到前三个和我们想要提取的数据内容是一致的,这些type后面的数字指的是奖金的等级,就是说对应到的号码是多少就是几等奖
到此为止,我们已经将需要获取的中奖金额提取出来了

转换数据

等我们看到这些数据的时候,虽然看到的是数字形式,但是他的数据类型确是字符形,通过此前对pygal模块的了解,我们知道这个模块只可以将整形的数字转换成图表格式。
所以我们需要做的就是将每一个数字提取出来,并且转换成整形存入到列表中
由于我们想要提取的只是一等奖的奖金金额(因为二、三等奖的金额远小于一等奖,不适合在图表中观察),所以这里我加上了一个if语句判断

money_list = []       #创建空列表
for data in datas:prizegrades = data["prizegrades"]for item in prizegrades:type_num = item['type']typemoney = item['typemoney']if type_num == 1:       #判断奖金等级是否为1money_list.append(int(typemoney))

但是我在运行这段代码的时候会提示错误,经过我的一番疯狂分析(百度求助),发现出错的原因是在提取奖金的时候会出现下划线和空字符串的干扰,而int转换数据类型则只能装换纯数字组成的字符串,所以转换的过程中会报错。但是这并不是一个大问题,我们只需要写一个if语句来跳过非法字符串就可以解决了,下面是正确的代码:

money_list = []       #创建空列表
for data in datas:prizegrades = data["prizegrades"]for item in prizegrades:typemoney = item['typemoney']if type_num == 1:            #判断奖金等级是否为1if typemoney == "":       #忽略空字符passelif typemoney == "_":     #忽略下划线passelse:           #将其他的可用数字放入列表money_list.append(int(typemoney))
print(money_list)

观察输出:

将数据转换成图表

#设置图表样式为柱状图
view = pygal.Bar()
#图表名
view.title = '奖金金额(¥)'
#将数据填入图表
view.add('money',money_list)
#在浏览器中显示图表
view.render_in_browser()

完整代码

import json
import pygalurl = 'http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice?name=ssq&issueCount=30'
headers = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36","Referer":"http://www.cwl.gov.cn/kjxx/ssq/"}
response = requests.get(url,headers=headers).text
data_json = json.loads(response)
datas = data_json["result"]
money_list = []       #创建空列表
for data in datas:prizegrades = data["prizegrades"]for item in prizegrades:type_num = item['type']typemoney = item['typemoney']if type_num == 1:                         #判断奖金等级是否为1if typemoney == "":       #忽略空字符passelif typemoney == "_":     #忽略下划线passelse:           #将其他的可用数字放入列表money_list.append(int(typemoney))#设置图表样式为柱状图
view = pygal.Bar()
#图表名
view.title = '奖金金额(¥)'
#将数据填入图表
view.add('money',money_list)
#在浏览器中显示图表
view.render_in_browser()

实现结果

Python数据可视化---pygal模块相关推荐

  1. 第十九章 python 数据可视化 Matplotlib Pygal

    python 数据可视化 一.使用Matplotlib生成数据图 1. matplotlib画图中文乱码小方框的解决方法 2. 知识点 3. 安装Matplotlib包 4. Matplotlib数据 ...

  2. python可视化模块pandas,python数据可视化软件

    Python中数据可视化经典库有哪些? Python有很多经典的数据可视化库,比较经典的数据可视化库有下面几个.matplotlib是Python编程语言及其数值数学扩展包 NumPy 的可视化操作界 ...

  3. python的requests模块功能_《Python数据可视化编程实战》—— 1.7 安装requests模块-阿里云开发者社区...

    本节书摘来异步社区<Python数据可视化编程实战>一书中的第1章,第1.7节,作者:[爱尔兰]Igor Milovanović,更多章节内容可以访问云栖社区"异步社区" ...

  4. python在线工具-6 种 Python 数据可视化工具

    原标题:6 种 Python 数据可视化工具 英文:Chris Moffitt,编译:伯乐在线/李加庆 简介 在 Python 中,将数据可视化有多种选择,正是因为这种多样性,何时选用何种方案才变得极 ...

  5. python数据可视化的特点_6 种 Python 数据可视化工具

    原标题:6 种 Python 数据可视化工具 英文:Chris Moffitt,编译:伯乐在线/李加庆 简介 在 Python 中,将数据可视化有多种选择,正是因为这种多样性,何时选用何种方案才变得极 ...

  6. python数据可视化第三方库有哪些_数据可视化!看看程序员大佬都推荐的几大Python库...

    数据可视化是数据分析中极为重要的部分,而数据可视化图表(如条形图,散点图,折线图,地理图等)也是非常关键的一环.Python作为数据分析中最流行的编程语言之一,有几个库可以创建精美而复杂的数据可视化, ...

  7. Python数据可视化学习(初学中...)

    Python数据可视化学习(初学中...) 1.使用Matplotlib生成数据图 1.1.安装Matplotlib包 1.2.Matplotlib数据图入门 1.2.1.折线图举例 1.2.2.图表 ...

  8. python数据可视化库_python和r中用于数据可视化的前9个库

    python数据可视化库 In the rapidly growing world of today, when technology is expanding at a rate like neve ...

  9. Python数据可视化的例子——画图总结

    前面写了大量的文章是关于数据的可视化,通过每一个具体的案例介绍了有关matplotlib模块.pandas模块和seaborn模块的绘图函数和参数含义,分别针对离散型数据.数值型数据和关系型数据讲解了 ...

最新文章

  1. 基于海康机器视觉算法平台的对位贴合项目个人理解 | CSDN原力计划
  2. Linux下找出吃内存的方法总结
  3. DNS详解: A记录,子域名,CNAME别名,PTR,MX,TXT,SRV,TTL
  4. 一篇总结的很好的Spring data jpa 文章,里面包含多种查询方式,可以结合api使用
  5. ajax+webservice
  6. linux的基础知识——进程组
  7. WriteFile API简介
  8. java绕过加密密码_JAVA中使用MD5加密实现密码加密
  9. Ext2 中如何换行 布局?
  10. snap-社交网络分析
  11. 论文记录-2018-A survey on image tampering and its detection in real-world photos
  12. 世界第八大奇迹:复利
  13. 程序员培训去哪里?哪里学习程序员
  14. Python和MD5网站挂马检测程序
  15. 学习记录, 带你玩转Pyppeteer (全干货)
  16. 程序员是什么又代表这多少角色?你想过吗?
  17. 批量计算图片的均值与标准差
  18. 机器视觉与图像处理研究必备
  19. java 爬数据工具 知乎_知乎爬虫之4:抓取页面数据
  20. 如何使用TestFlight发布和安装测试版的app

热门文章

  1. 【大数据入门核心技术-HBase】(四)HBase2.2.2高可用集群搭建
  2. CK-FR08-E01与恩基士PLC配置指南
  3. 参数化,断言,参数化时为什么做断言,怎么做断言,如何确保断言的正确
  4. 数据结构---王道408
  5. 【Basic Use Case】
  6. 车轮件缺陷分析及设计优化 | 智铸超云案例分享
  7. 3 主存储器 (存储器介绍和分类、主存储器组成和技术指标)
  8. 阿里云证书资源包申请免费SSL流程(图文教程)
  9. 2022/06/14,15 day15与day16:内部类
  10. chrome浏览器不成设置成默认浏览器