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

相关文章

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

Python中的getopt模块用法小结

《Python中的getopt模块用法小结》getopt.getopt()函数是Python中用于解析命令行参数的标准库函数,该函数可以从命令行中提取选项和参数,并对它们进行处理,本文详细介绍了Pyt... 目录getopt模块介绍getopt.getopt函数的介绍getopt模块的常用用法getopt模