Python用湖南天气详情数据(可惜没雨),进行简单的可视化分析

news/2024/11/27 8:45:10/

前言

Echarts是一个开源的数据可视化JS库,pyecharts是一款将python与echarts结合的强大的数据可视化工具

开发环境

  • python 3.8
  • pycharm 2022.3.2

完整源码看这里这里👈👈👈

先来获取我们想要的天气数据

请求数据

因为是静态网站,所以数据还是很好找到的,F12打开开发者工具,刷新下网站就行了

url = 'http://www.weather.com.cn/weather1d/101250101.shtml'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
response = requests.get(url=url, headers=headers)

解析数据

用正则可以直接匹配我我们想要的数据

html_data = re.findall('var hour3data=(.*)', response.text)[0]
json_data = json.loads(html_data)
print(json_data)

提取数据

for index in json_data['7d']:print(index)for i in index:dit = {'时间': i.split(',')[0],'天气': i.split(',')[2],'温度': i.split(',')[3],'风向': i.split(',')[4],'风级': i.split(',')[5],}print(dit)

保存数据

把数据保存到csv文件里,而且数据很干净,后面做可视化不用再进一步进行清洗

f = open('data.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['时间','天气','温度','风向','风级'
])
csv_writer.writeheader()

数据可视化

我们都知道python上的一款可视化工具matplotlib,而前些阵子做一个Spark项目的时候用到了百度开源的一个可视化JS工具-Echarts,可视化类型非常多,但是得通过导入js库在Java Web项目上运行,平时用Python比较多,于是就在想有没有Python与Echarts结合的轮子。
Google后,找到一个国人开发的一个Echarts与Python结合的轮子:pyecharts

城市温度变化柱状图(一周气温变化)

x = Faker.choose()
tl = Timeline()
time_list = [i for i in range(23, 32)]
for i, date, temperature in zip(time_list, date_list, temperature_list):bar = (Bar().add_xaxis(date).add_yaxis("长沙温度", temperature).set_global_opts(title_opts=opts.TitleOpts("长沙3月{}日温度".format(i)),graphic_opts=[opts.GraphicGroup(graphic_item=opts.GraphicItem(rotation=JsCode("Math.PI / 4"),bounding="raw",right=100,bottom=110,z=100,),children=[opts.GraphicRect(graphic_item=opts.GraphicItem(left="center", top="center", z=100),graphic_shape_opts=opts.GraphicShapeOpts(width=400, height=50),graphic_basicstyle_opts=opts.GraphicBasicStyleOpts(fill="rgba(0,0,0,0.3)"),),opts.GraphicText(graphic_item=opts.GraphicItem(left="center", top="center", z=100),graphic_textstyle_opts=opts.GraphicTextStyleOpts(text="长沙3月{}日温度".format(i),font="bold 26px Microsoft YaHei",graphic_basicstyle_opts=opts.GraphicBasicStyleOpts(fill="#fff"),),),],)],))tl.add(bar, "3月{}日".format(i))tl.render_notebook()

全省每小时温度分布图(3天气温变化)

file = "weather_henan_allcities.xlsx"
data = pd.read_excel(file) #reading file
time_line_final = list(data['小时'].iloc[0:24])from pyecharts import options as opts
from pyecharts.charts import Map,Timeline
#定义一个timeline和map的组合图
def timeline_map(data):tl = Timeline().add_schema(play_interval =300,height=40,is_rewind_play=False,orient = "horizontal",is_loop_play = True,is_auto_play=False)#设置播放速度、是否循环播放等参数for h in time_line_final:x =data[data["小时"]==h]['城市'].values.tolist() #选取指定城市y=data[data["小时"]==h]['温度'].values.tolist() #选取时间的温度map_shape = (Map().add("{}h时气温(℃)".format(h),[list(z) for z in zip(x, y)],"湖南") #打包输入地区及对应降温度数据.set_series_opts(label_opts=opts.LabelOpts("{b}")) #配置系列参数,{b}为显示地区数据.set_global_opts(title_opts=opts.TitleOpts(title="每小时气温分布"), #全局参数中设置标题visualmap_opts=opts.VisualMapOpts(max_=300,  #设置映射配置项的最大值is_piecewise=True, #设置是否为分段显示pos_top = "60%", #映射配置项距图片上部的距离pieces=[{"min": 13, "label": '>13℃', "color": "#FF0000"},  # 分段指定颜色及名称{"min": 10, "max": 12, "label": '10-13℃', "color": "#FF3333"},{"min": 7, "max": 9, "label": '7-9℃', "color": "#FF9999"},{"min": 0, "max": 6, "label": '0-6℃', "color": "#FFCCCC"}])))tl.add(map_shape, "{}h".format(h)) #将不同日期的数据加入到timeline中return tl
timeline_map(data).render("rainfall.html")

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇


http://www.ppmy.cn/news/34999.html

相关文章

数据仓库相关面试题

1.请介绍一下星型模型和雪花模型的区别及适用场景。 星型模型和雪花模型是数据仓库中常见的两种数据建模方式。 星型模型是由一个中心事实表和多个与之相关的维度表构成的,维度表通常只有一层,每个维度表只关联一个事实表。在星型模型中,事实…

Sketch for mac(专业矢量绘图设计软件)图文安装教程

Sketch是一款Mac上的矢量图形设计软件,专门用于UI/UX设计,它能够帮助设计师快速创建高质量的数字产品原型和界面设计方案。 Sketch具有简单易用的界面,支持多种插件和扩展,可以轻松地集成到设计工作流程中。Sketch内置了多种常用…

CentOS支持中文

一般 centos 默认支持语言 en_US.UTF-8,但是这样会有中文乱码的出现,我们需要设置成 zh_CN.UTF-8 才行。 1.查看系统是否安装有中文语言包 locale -a | grep “zh_CN” 命令含义:列出所有可用的公共语言环境的名称,包含有"z…

如何巧妙应用JMeter的Dummy Sampler

很少人知道Dummy Sampler这个采样器(扩展插件里带的),也不知道它的妙用。Dummy Sampler 可以比较方便地模拟测试场景,自定义Request Data和Response Data,在学习测试脚本编写的过程中非常有用。另外如果巧妙应用它,可以在开发人员出接口文档后(接口还没实现)就可以同步…

【Vue2从入门到精通】详解Vue.js的15种常用指令及其使用场景

文章目录前言1. v-text / {{ expression }}2.v-html3.v-bind4.v-on5. v-model6.v-for7.v-if / v-else-if / v-else9.v-show10.v-cloak11.v-pre12.组件注册指令13.动态组件指令14.自定义指令15.过滤器指令前言 Vue.js 是一款流行的前端框架,它通过指令(Di…

【数据结构】千字深入浅出讲解栈(附原码 | 超详解)

🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:C语言实现数据结构 💬总结:希望你看完…

2023年总结的web前端学习路线分享(学习导读)

如果你打开了这篇文章,说明你是有兴趣想了解前端的这个行业的,以下是博主2023年总结的一些web前端的学习分享路线,如果你也想从事前端或者有这方面的想法的,请接着往下看! 前端发展前景 前端入门 巩固基础 前端工程…

C的强符号/弱符号

首先上代码和结果&#xff1a; 代码&#xff1a; #include <stdio.h> int k; int k; int main() {printf("addr of k %p\n", &k);printf("value of k %d\n", k);return 0; }结果&#xff1a; addr of k 00408074 value of k 0问题&…