Python学习打卡:day12

2024-06-21 23:04
文章标签 python 学习 打卡 day12

本文主要是介绍Python学习打卡:day12,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

day12

笔记来源于:黑马程序员python教程,8天python从入门到精通,学python看这套就够了

目录

  • day12
    • 92、全国疫情地图构建
      • 数据整理
        • 获取数据
        • 数据整体结构(全国)
        • 省数据结构
        • 获取每个省份的确诊数据
        • 上述代码执行后输出,每个省的确诊数据
      • 国内疫情地图
        • 创建地图
        • 添加数据
        • 设置全局设置,定制分段的视觉映射
        • 绘图
      • 最终结果
    • 93、河南省疫情地图构建
      • 获取河南省各市数据
      • 省数据结构
      • 把各市数据汇总到一个列表中
      • 参考国内疫情地图生成河南省疫情地图
      • 最终显示结果
    • 94、基础柱状图构建
      • 通过Bar构建基础柱状图
      • 反转 x 和 y 轴并使数值标签在右侧
    • 95、基础时间线柱状图
      • 创建时间线
        • 1、
        • 2、设置自动播放
        • 3、设置时间线主题
        • 4、示例代码
        • 5、实现结果
    • 96、动态GDP柱状图绘制
      • 补充知识点:列表的 sort 方法
        • 带名函数形势
        • 匿名 Lambda 形式
      • 正文
        • 处理数据
          • 读取数据,删除第一条数据
          • 将数据转换为字典存储
        • 准备时间线
        • 自动播放和绘图
      • 效果展示

92、全国疫情地图构建

数据整理

获取数据

在这里插入图片描述

数据整体结构(全国)

省数据结构

在这里插入图片描述

获取每个省份的确诊数据
"""
演示全国疫情可视化地图开发
"""
import json
from pyecharts.charts import Map
from pyecharts.options import *# 读取数据文件
f = open("/home/yin-roc/1-Github/Ubuntu20.04-VMware/pythonProject/Python_Learning/02_Python入门语法/可视化案例数据/地图数据/疫情.txt","r",encoding="UTF-8"
)
data = f.read()     # 全部数据# 关闭文件
f.close()# 取到各省数据
# 将字符串json转换为python的字典
data_dict = json.loads(data)    # 基础数据字典
# 从字典中取出省份的数据
province_data_list = data_dict["areaTree"][0]["children"]# 组装每个省份和确诊人数为元组,并各个省的数据都封装入列表内
data_list = []      # 绘图所需要的数据列表
for province_data in province_data_list:province_name = province_data["name"]                   # 省份名称province_confirm = province_data["total"]["confirm"]    # 确诊人数# 给列表传参,传入一个元组,元组有两个元素data_list.append((province_name, province_confirm))print(data_list)
上述代码执行后输出,每个省的确诊数据
[('台湾省', 15880), ('江苏省', 1576), ('云南省', 982), ('河南', 1518), ('上海', 2408), ('湖南', 1181), ('湖北', 68286), ('广东', 2978), ('香港', 12039), ('福建', 773), ('浙江', 1417), ('山东', 923), ('四川', 1179), ('天津', 445), ('北京', 1107), ('陕西', 668), ('广西', 289), ('辽宁', 441), ('重庆', 603), ('澳门', 63), ('甘肃', 199), ('山西', 255), ('海南', 190), ('内蒙古', 410), ('吉林', 574), ('黑龙江', 1613), ('宁夏', 77), ('青海', 18), ('江西', 937), ('贵州', 147), ('西藏', 1), ('安徽', 1008), ('河北', 1317), ('新疆', 980)]

国内疫情地图

创建地图

导入模块:

from pyecharts.charts import Map
from pyecharts.options import *

创建地图:

# 创建地图对象
map = Map()
添加数据
# 添加数据
map.add("各省份确诊人数", data_list, "china")
设置全局设置,定制分段的视觉映射
# 设置全局设置,定制分段的视觉映射
map.set_global_opts(title_opts=TitleOpts(title="全国疫情地图"),visualmap_opts=VisualMapOpts(is_show=True,       # 是否显示is_piecewise=True,  # 是否分段pieces=[{"min": 1, "max": 99, "label": "1-99", "color": "#CCFFFF"},{"min": 100, "max": 999, "label": "100-999", "color": "#FFFF99"},{"min": 1000, "max": 4999, "label": "1000-4999", "color": "#FF9966"},{"min": 5000, "max": 9999, "label": "5000-9999", "color": "#FF6666"},{"min": 10000, "max": 99999, "label": "10000-99999", "color": "#CC3333"},{"min": 100000, "label": "100000+", "color": "#990033"},])
)
绘图
# 绘图
map.render("全国疫情地图.html")

最终结果

在这里插入图片描述

93、河南省疫情地图构建

获取河南省各市数据

"""
演示河南省疫情可视化地图开发
"""
import json
from pyecharts.charts import Map
from pyecharts.options import *# 读取数据文件
f = open("/home/yin-roc/1-Github/Ubuntu20.04-VMware/pythonProject/Python_Learning/02_Python入门语法/可视化案例数据/地图数据/疫情.txt","r",encoding="UTF-8"
)
data = f.read()     # 全部数据# 关闭文件
f.close()

省数据结构

在这里插入图片描述

把各市数据汇总到一个列表中

# 取到河南省数据
# 将字符串json转换为python的字典
data_dict = json.loads(data)    # 基础数据字典
# 从字典中取出河南省的数据
cities_data = data_dict["areaTree"][0]["children"][3]["children"]# 组装每个省份和确诊人数为元组,并各个省的数据都封装入列表内
data_list = []      # 绘图所需要的数据列表
for city_data in cities_data:city_name = city_data["name"] + "市"city_confirm = city_data["total"]["confirm"]    # 确诊人数# 给列表传参,传入一个元组,元组有两个元素data_list.append((city_name, city_confirm))# 未出现济源市信息,手动添加
data_list.append(("济源市", 5))print(data_list)

参考国内疫情地图生成河南省疫情地图

# 创建地图对象
map = Map()# 添加数据
map.add("河南省疫情分布", data_list, "河南")# 设置全局设置,定制分段的视觉映射
map.set_global_opts(title_opts=TitleOpts(title="河南省疫情地图"),visualmap_opts=VisualMapOpts(is_show=True,       # 是否显示is_piecewise=True,  # 是否分段pieces=[{"min": 1, "max": 99, "label": "1-99", "color": "#CCFFFF"},{"min": 100, "max": 999, "label": "100-999", "color": "#FFFF99"},{"min": 1000, "max": 4999, "label": "1000-4999", "color": "#FF9966"},{"min": 5000, "max": 9999, "label": "5000-9999", "color": "#FF6666"},{"min": 10000, "max": 99999, "label": "10000-99999", "color": "#CC3333"},{"min": 100000, "label": "100000+", "color": "#990033"},])
)# 绘图
map.render("河南省地图.html")

最终显示结果

在这里插入图片描述

94、基础柱状图构建

通过Bar构建基础柱状图

"""
演示基础柱状图的开发
"""
from pyecharts.charts import Bar
from pyecharts.options import LabelOpts
# 使用 Bar 构建基础柱状图
bar = Bar()# 添加 x 轴的数据
bar.add_xaxis(["中国", "美国", "英国"])# 添加 y 轴的数据
bar.add_yaxis("GDP", [30, 20, 10])# 绘图
bar.render("基础柱状图.html")

效果如下:

在这里插入图片描述

反转 x 和 y 轴并使数值标签在右侧

"""
演示基础柱状图的开发
"""
from pyecharts.charts import Bar
from pyecharts.options import LabelOpts
# 使用 Bar 构建基础柱状图
bar = Bar()# 添加 x 轴的数据
bar.add_xaxis(["中国", "美国", "英国"])# 将数值标签从柱状图中间移到柱状图右侧
bar.add_yaxis("GDP", [30, 20, 10], label_opts=LabelOpts(position="right"))# 反转 x 轴 和 y 轴
bar.reversal_axis()# 绘图
bar.render("基础柱状图.html")

效果如下:
在这里插入图片描述

95、基础时间线柱状图

创建时间线

Timeline()——时间线

柱状图描述的是分类数据,回答的是每一个分类中『有多少?』这个问题。这是柱状图的主要特点,同时柱状图很难动态的描述一个趋势性的数据。这里 pyecharts 为我们提供了一种解决方案——时间线

如果说一个Bar、Line对象是一张图表的话,时间线就是创建一个一维的 x 轴,轴上每一个点就是一个图表对象。
在这里插入图片描述

1、
from pyecharts.charts import Bar, Timeline
from pyecharts.options import LabelOpts# 使用 Bar 构建基础柱状图
bar1 = Bar()
bar1.add_xaxis(["中国", "美国", "英国"])
bar1.add_yaxis("GDP", [30, 30, 20])
bar1.reversal_axis()bar2 = Bar()
bar2.add_xaxis(["中国", "美国", "英国"])
bar2.add_yaxis("GDP", [50, 50, 50])
bar2.reversal_axis()bar3 = Bar()
bar3.add_xaxis(["中国", "美国", "英国"])
bar3.add_yaxis("GDP", [70, 60, 60])
bar3.reversal_axis()# 构建时间线对象
timeline = Timeline()# 在时间线内添加柱状图对象
timeline.add(bar1, "点1")
timeline.add(bar2, "点2")
timeline.add(bar3, "点3")# 绘图是用时间线对象绘图,而不是 Bar 对象了
timeline.render("基础时间线柱状图.html")
2、设置自动播放
# 自动播放设置
timeline.add_schema(play_interval=1000,         # 自动播放的时间间隔is_timeline_show=True,      # 是否显示时间线is_auto_play=True,          # 是否自动播放is_loop_play=True           # 是否循环播放
)
3、设置时间线主题
# 构建时间线对象
timeline = Timeline({"theme": ThemeType.DARK}
)

在这里插入图片描述

4、示例代码
"""
演示基础柱状图的开发
"""
from pyecharts.charts import Bar, Timeline
from pyecharts.options import LabelOpts
from pyecharts.globals import ThemeType# 使用 Bar 构建基础柱状图
bar1 = Bar()
bar1.add_xaxis(["中国", "美国", "英国"])
bar1.add_yaxis("GDP", [30, 30, 20])
bar1.reversal_axis()bar2 = Bar()
bar2.add_xaxis(["中国", "美国", "英国"])
bar2.add_yaxis("GDP", [50, 50, 50])
bar2.reversal_axis()bar3 = Bar()
bar3.add_xaxis(["中国", "美国", "英国"])
bar3.add_yaxis("GDP", [70, 60, 60])
bar3.reversal_axis()# 构建时间线对象
timeline = Timeline({"theme": ThemeType.DARK}
)# 在时间线内添加柱状图对象
timeline.add(bar1, "点1")
timeline.add(bar2, "点2")
timeline.add(bar3, "点3")# 自动播放设置
timeline.add_schema(play_interval=1000,         # 自动播放的时间间隔is_timeline_show=True,      # 是否显示时间线is_auto_play=True,          # 是否自动播放is_loop_play=True           # 是否循环播放
)# 绘图是用时间线对象绘图,而不是 Bar 对象了
timeline.render("基础时间线柱状图.html")
5、实现结果

在这里插入图片描述

96、动态GDP柱状图绘制

补充知识点:列表的 sort 方法

使用方式:

列表.sort(key=选择排序依据的函数, reverse=True/False)

  • 参数key,是要求传入一个函数,表示将列表的每一个元素都传入函数中,返回排序的依据;
  • 参数reverse,是否反转排序结果,True表示降序,False表示升序。
带名函数形势
# 准备列表
my_list = [["a", 33], ["b", 55], ["c", 11]]# 排序,基于带名函数
def choose_sort_key(element):return element[1]
my_list.sort(key=choose_sort_key, reverse=True)
print(my_list)
匿名 Lambda 形式
# 准备列表
my_list = [["a", 33], ["b", 55], ["c", 11]]# 排序,基于 lambda 匿名函数
my_list.sort(key=lambda element:element[1], reverse=True)print(my_list)

正文

处理数据
读取数据,删除第一条数据
# 读取数据
f = open("/home/yin-roc/1-Github/Ubuntu20.04-VMware/pythonProject/Python_Learning/02_Python入门语法/可视化案例数据/动态柱状图数据/1960-2019全球GDP数据.csv","r",encoding="GB2312"
)
data_lines = f.readlines()# 关闭文件
f.close()# 删除第一行数据
data_lines.pop(0)
将数据转换为字典存储

格式为:{ 年份: [ [国家, gdp], [国家,gdp], ...... ], 年份: [ [国家, gdp], [国家,gdp], ...... ], ...... }

# 将数据变成字典存储,格式为:
# {年份:[[国家: gdp], [国家: gdp], [国家: gdp], ......], 年份:[[国家: gdp], [国家: gdp], [国家: gdp], ......]}
# 先定义一个字典对象
data_dict = {}
for line in data_lines:year = int(line.split(",")[0])          # 年份country = line.split(",")[1]       # 国家gdp = float(line.split(",")[2])         # gdp数据# 如何判断字典里面有没有指定的key?# try块尝试访问字典中的年份键(data_dict[year])并向其追加数据(.append([country, gdp]))。try:data_dict[year].append([country, gdp])# 如果年份键不存在(即第一次遇到这个年份),会抛出KeyError异常。# 在except块中,捕获到KeyError异常后,创建一个新的空列表(data_dict[year] = []),然后再向其中追加数据(.append([country, gdp]))。except KeyError:data_dict[year] = []data_dict[year].append([country, gdp])
准备时间线
# 创建时间线对象
timeline = Timeline({"theme":ThemeType.LIGHT})# 排序年份
sorted_year_list = sorted(data_dict.keys())
for year in sorted_year_list:data_dict[year].sort(key = lambda element: element[1], reverse=True)# 取出本年份前八名的国家year_data = data_dict[year][0:8]x_data = []y_data = []for country_gdp in year_data:x_data.append(country_gdp[0])   # x 轴添加国家y_data.append(country_gdp[1] / 100000000)   # y 轴添加 gdp 数据# 构建柱状图bar = Bar()x_data.reverse()y_data.reverse()bar.add_xaxis(x_data)bar.add_yaxis("GDP(亿)", y_data, label_opts=LabelOpts(position="right"))# 反转 x 轴和 y轴bar.reversal_axis()# 设置每一年的图表的标题bar.set_global_opts(title_opts=TitleOpts(title=f"{year}年全球前8的GDP数据"))timeline.add(bar, str(year))
自动播放和绘图
# 设置时间线自动播放
timeline.add_schema(play_interval=1000,is_timeline_show=True,is_auto_play=True,is_loop_play=False
)# 绘图
timeline.render("1960~2019全球GDP前8国家.html")

效果展示

在这里插入图片描述

这篇关于Python学习打卡:day12的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1082591

相关文章

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数