Python基础

您所在的位置:网站首页 中国确诊人数最新动态图片 Python基础

Python基础

2024-07-15 06:16| 来源: 网络整理| 查看: 265

前言

本文是根据黑马程序员Python教程所作之笔记,目的是为了方便我本人以及广大同学们查漏补缺。 不想做笔记直接来我的频道。当然啦,自己的笔记才是最好的哦! PS:感谢黑马程序员! 教程链接:黑马程序员最新Python教程,8天python从入门到精通,学python看这套就够了

Python基础模块总目录

第一章:你好Python 第二章:Python基础语法 第三章:Python判断语句 第四章:Python循环语句 第五章:Python函数 第六章:Python数据容器 第七章:Python函数进阶 第八章:Python文件操作 第九章:Python异常、模块与包 基础综合案例之数据可视化

目录 前言Python基础综合案例(数据可视化 - 折线图可视化)json数据格式pyecharts模块介绍pyecharts快速入门数据处理创建折线图 Python基础综合案例(数据可视化 - 地图可视化)基础地图使用疫情地图-国内疫情地图疫情地图-省级疫情地图 Python基础综合案例(数据可视化 - 动态柱状图)基础柱状图基础时间线柱状图GDP动态柱状图绘制

Python基础综合案例(数据可视化 - 折线图可视化)

效果一:2020年印美日新冠累计确诊人数

2020年是新冠疫情爆发的一年,随着疫情的爆发,国内外确诊人数成了大家关心的热点,相信大家都有看过类似的疫情报告。本案例对印度美国日本三个国家确诊人数的进行了可视化处理,形成了可视化的疫情确诊人数报告。

效果二:全国疫情地图可视化

效果三:动态GDP增长图

数据来源

本案例数据全部来自 ,及公开的全球各国GDP数据

使用的技术:

Echarts 是个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可. 而 Python 是门富有表达力的语言,很适合用于数据处理. 当数据分析遇上数据可视化时pyecharts 诞生了.

json数据格式

什么是json

JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据

JSON本质上是一个带有特定格式的字符串

主要功能:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互。类似于:

国际通用语言-英语

中国56个民族不同地区的通用语言-普通话

Python语言使用JSON有很大优势,因为:JSON无非就是一个单独的字典或一个内部元素都是字典的列表

所以JSON可以直接和Python的字典或列表进行无缝转换。

json有什么用

各种编程语言存储数据的容器不尽相同,在Python中有字典dict这样的数据类型,而其它语言可能没有对应的字典。为了让不同的语言都能够相互通用的互相传递数据,JSON就是一种非常良好的中转数据格式。如下图,以Python和C语言互传数据为例:

json格式数据转化

json格式的数据要求很严格,下面我们看一下他的要求

Python数据和Json数据的相互转化

Python数据和Json数据的相互转化

通过 json.dumps(data) 方法把python数据转化为了 json数据

data = json.dumps(data)

如果有中文可以带上:ensure_ascii=False 参数来确保中文正常转换

通过 json.loads(data) 方法把josn数据转化为了 python列表或字典

data = json.loads(data)

""" 演示JSON数据和Python字典的相互转换 """ import json # 准备列表,列表内每一个元素都是字典,将其转换为JSON data = [{"name": "张大山", "age": 11}, {"name": "王大锤", "age": 13}, {"name": "赵小虎", "age": 16}] json_str = json.dumps(data, ensure_ascii=False) print(type(json_str)) print(json_str) # 准备字典,将字典转换为JSON d = {"name":"周杰轮", "addr":"台北"} json_str = json.dumps(d, ensure_ascii=False) print(type(json_str)) print(json_str) # 将JSON字符串转换为Python数据类型[{k: v, k: v}, {k: v, k: v}] s = '[{"name": "张大山", "age": 11}, {"name": "王大锤", "age": 13}, {"name": "赵小虎", "age": 16}]' l = json.loads(s) print(type(l)) print(l) # 将JSON字符串转换为Python数据类型{k: v, k: v} s = '{"name": "周杰轮", "addr": "台北"}' d = json.loads(s) print(type(d)) print(d) pyecharts模块介绍

pyecharts模块

如果想要做出数据可视化效果图, 可以借助pyecharts模块来完成

概况 :

Echarts 是个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时 pyecharts 诞生了

pyecharts模块安装

使用在前面学过的pip命令即可快速安装PyEcharts模块

pip install pyecharts

查看官方示例

打开官方画廊:

https://gallery.pyecharts.org/#/README

pyecharts快速入门

pyechars入门

基础折线图

""" 演示pyecharts的基础入门 """ # 导包 from pyecharts.charts import Line from pyecharts.options import TitleOpts, LegendOpts, ToolboxOpts, VisualMapOpts # 创建一个折线图对象 line = Line() # 给折线图对象添加x轴的数据 line.add_xaxis(["中国", "美国", "英国"]) # 给折线图对象添加y轴的数据 line.add_yaxis("GDP", [30, 20, 10]) # 设置全局配置项set_global_opts来设置, line.set_global_opts( title_opts=TitleOpts(title="GDP展示", pos_left="center", pos_bottom="1%"), legend_opts=LegendOpts(is_show=True), toolbox_opts=ToolboxOpts(is_show=True), visualmap_opts=VisualMapOpts(is_show=True), ) # 通过render方法,将代码生成为图像 line.render()

pyecharts有哪些配置选项

pyecharts模块中有很多的配置选项,常用到2个类别的选项:

全局配置选项

系列配置选项

全局配置项能做什么?

配置图表的标题

配置图例

配置鼠标移动效果

配置工具栏

等整体配置项

set_global_opts方法

这里全局配置选项可以通过 set_global_opts 方法来进行配置,相应的选项和选项的功能如下:

系列配置项,我们在后面构建案例时讲解

数据处理

数据处理

原始数据格式:

导入模块:

对数据进行整理,让数据符合json格式:

创建折线图

导入模块

导入模块:

折线图相关配置项

折线图相关配置项:

创建折线图

这里的Line()是构建类对象,我们先不必理解是什么意思,后续在Python高阶中进行详细讲解。

目前我们简单的会用即可

添加数据

.add_yaxis相关配置选项:

运行效果图:

全局配置选项

.set_global_opts全局配置选项:

运行效果图:

Python基础综合案例(数据可视化 - 地图可视化) 基础地图使用

基础地图演示

基础地图演示 - 视觉映射器

疫情地图-国内疫情地图

案例效果

代码总览

""" 演示全国疫情可视化地图开发 """ import json from pyecharts.charts import Map from pyecharts.options import * # 读取数据文件 f = open("C:/地图数据疫情.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)) # 创建地图对象 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, "lable": "1~99人", "color": "#CCFFFF"}, {"min": 100, "max": 999, "lable": "100~9999人", "color": "#FFFF99"}, {"min": 1000, "max": 4999, "lable": "1000~4999人", "color": "#FF9966"}, {"min": 5000, "max": 9999, "lable": "5000~99999人", "color": "#FF6666"}, {"min": 10000, "max": 99999, "lable": "10000~99999人", "color": "#CC3333"}, {"min": 100000, "lable": "100000+", "color": "#990033"}, ] ) ) # 绘图 map.render("全国疫情地图.html") 疫情地图-省级疫情地图

省疫情地图

效果展示

代码总览

""" 演示河南省疫情地图开发 """ import json from pyecharts.charts import Map from pyecharts.options import * # 读取文件 f = open("C:/疫情.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"] # 准备数据为元组并放入list 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)) # 构建地图 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, "lable": "1~99人", "color": "#CCFFFF"}, {"min": 100, "max": 999, "lable": "100~9999人", "color": "#FFFF99"}, {"min": 1000, "max": 4999, "lable": "1000~4999人", "color": "#FF9966"}, {"min": 5000, "max": 9999, "lable": "5000~99999人", "color": "#FF6666"}, {"min": 10000, "max": 99999, "lable": "10000~99999人", "color": "#CC3333"}, {"min": 100000, "lable": "100000+", "color": "#990033"}, ] ) ) # 绘图 map.render("河南省疫情地图.html") Python基础综合案例(数据可视化 - 动态柱状图)

案例效果

通过pyechars可以实现数据的动态显示, 直观的感受1960~2019年全世界各国GDP的变化趋势

基础柱状图

通过 Bar() 构建一个柱状图对象

和折线图一样,通过 add_xaxis() 和 add_yaxis() 添加x和y轴数据

通过柱状图对象的:reversal_axis(),反转x和y轴

通过 label_opts=LabelOpts(position="right") 设置数值标签在右侧显示

通过Bar构建基础柱状图

反转x和y轴

数值标签在右侧

""" 演示基础柱状图的开发 """ 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], label_opts=LabelOpts(position="right")) # 设置数值标签在右侧 # 反转x和y轴 bar.reversal_axis() # 绘图 bar.render("基础柱状图.html") 基础时间线柱状图

创建时间线

Timeline() - 时间线

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

如果说一个Bar、Line对象是一张图表的话,时间线就是创建一个一维的x轴,轴上每一个点就是一个图表对象

""" 演示带有时间线的柱状图开发 """ from pyecharts.charts import Bar, Timeline from pyecharts.options import LabelOpts from pyecharts.globals import ThemeType bar1 = Bar() bar1.add_xaxis(["中国", "美国", "英国"]) bar1.add_yaxis("GDP", [30, 30, 20], label_opts=LabelOpts(position="right")) bar1.reversal_axis() bar2 = Bar() bar2.add_xaxis(["中国", "美国", "英国"]) bar2.add_yaxis("GDP", [50, 50, 50], label_opts=LabelOpts(position="right")) bar2.reversal_axis() bar3 = Bar() bar3.add_xaxis(["中国", "美国", "英国"]) bar3.add_yaxis("GDP", [70, 60, 60], label_opts=LabelOpts(position="right")) bar3.reversal_axis() # 构建时间线对象 timeline = Timeline({"theme": ThemeType.LIGHT}) # 在时间线内添加柱状图对象 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")

自动播放

时间线设置主题

timeline = Timeline({"theme": ThemeType.LIGHT})

GDP动态柱状图绘制

需求分析

简单分析后,发现最终效果图中需要:

GDP数据处理为亿级

有时间轴,按照年份为时间轴的点

x轴和y轴反转,同时每一年的数据只要前8名国家

有标题,标题的年份会动态更改

设置了主题为LIGHT

列表的sort方法

在前面我们学习过sorted函数,可以对数据容器进行排序。

在后面的数据处理中,我们需要对列表进行排序,并指定排序规则,sorted函数就无法完成了。

我们补充学习列表的sort方法。

使用方式:

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

参数key,是要求传入一个函数,表示将列表的每一个元素都传入函数中,返回排序的依据

参数reverse,是否反转排序结果,True表示降序,False表示升序

代码总览

""" 演示第三个图表:GDP动态柱状图开发 """ from pyecharts.charts import Bar, Timeline from pyecharts.options import * from pyecharts.globals import ThemeType # 读取数据 f = open("C:/1960-2019全球GDP数据.csv", "r", encoding="GB2312") data_lines = f.readlines() # 关闭文件 f.close() # 删除第一条数据 data_lines.pop(0) # 将数据转换为字典存储,格式为: # { 年份: [ [国家, gdp], [国家,gdp], ...... ], 年份: [ [国家, gdp], [国家,gdp], ...... ], ...... } # { 1960: [ [美国, 123], [中国,321], ...... ], 1961: [ [美国, 123], [中国,321], ...... ], ...... } # 先定义一个字典对象 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]) 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) # 取出本年份前8名的国家 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}年全球前8GDP数据") ) timeline.add(bar, str(year)) # for循环每一年的数据,基于每一年的数据,创建每一年的bar对象 # 在for中,将每一年的bar对象添加到时间线中 # 设置时间线自动播放 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")


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3