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并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用