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 panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统