python使用pyecharts展示中国各城市天气数据

您所在的位置:网站首页 各个省份天气情况 python使用pyecharts展示中国各城市天气数据

python使用pyecharts展示中国各城市天气数据

2024-07-11 18:19| 来源: 网络整理| 查看: 265

Python数据挖掘+数据图像化展示

数据来源中国气象局 require: v1.9.1 pyecharts/pandas/request

先看看最终效果

在这里插入图片描述

1. 数据获取

爬虫现在不能发了。。。

import requests import pandas as pd url = "http://weather.cma.cn/api/now/" dataset = [] for addr in range(50136,60000): with requests.get(url + str(addr)) as resp: resp.encoding = resp.apparent_encoding if not resp.json()['data']: continue data = [] # 城市省份 data.append(resp.json()['data']['location']['path'].split()[1].strip(',')) # 城市名字 data.append(resp.json()['data']['location']['name']) # 城市气象台id data.append(resp.json()['data']['location']['id']) # 降水 data.append(resp.json()['data']['now']['precipitation']) # 温度 data.append(resp.json()['data']['now']['temperature']) # 气压 data.append(resp.json()['data']['now']['pressure']) # 湿度 data.append(resp.json()['data']['now']['humidity']) # 风向 data.append(resp.json()['data']['now']['windDirection']) # 风力 data.append(resp.json()['data']['now']['windScale']) # 时间 data.append(resp.json()['data']['lastUpdate']) dataset.append(data) # 创建pandas DataFrame df = pd.DataFrame(dataset,columns=['省份','城市','气象台编号','降水','温度','气压','湿度','风向','风力','时间']) # 保存 df.to_csv('weather.csv',encoding='utf_8_sig') 处理数据 读出数据,并且生成中国气象图 df = pd.read_csv('weather_now.csv') from pyecharts import options as opts from pyecharts.charts import Geo from pyecharts.globals import ChartType from pyecharts.charts import Tab weather = Tab( page_title='全国气象') temperature = ( Geo(is_ignore_nonexistent_coord=True) .add_schema( maptype="china-cities", is_roam=False) .add( "气温", [list(z) for z in zip(df['城市'],df['温度']) if z[1] != 9999.0], type_=ChartType.SCATTER, blur_size=20, point_size=20, ) .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) .set_global_opts( legend_opts=opts.LegendOpts(is_show=False), visualmap_opts=opts.VisualMapOpts(min_=-30.0, max_=30.0), title_opts=opts.TitleOpts(title="全国气温") ) ) pressure = ( Geo(is_ignore_nonexistent_coord=True) .add_schema( maptype="china-cities", is_roam=False) .add( "气压", [list(z) for z in zip(df['城市'],df['气压']) if z[1] != 9999.0], type_=ChartType.SCATTER, blur_size=20, point_size=20 ) .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) .set_global_opts( legend_opts=opts.LegendOpts(is_show=False), visualmap_opts=opts.VisualMapOpts(min_=900, max_=1050), title_opts=opts.TitleOpts(title="全国气压"), ) ) humidity = ( Geo(is_ignore_nonexistent_coord=True) .add_schema( maptype="china-cities", is_roam=False) .add( "湿度", [list(z) for z in zip(df['城市'],df['湿度']) if z[1] != 9999.0], type_=ChartType.SCATTER, blur_size=20, point_size=20 ) .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) .set_global_opts( legend_opts=opts.LegendOpts(is_show=False), visualmap_opts=opts.VisualMapOpts(min_=0, max_=100), title_opts=opts.TitleOpts(title="全国湿度"), ) ) weather.add( chart=temperature, tab_name='气温' ) weather.add( chart=pressure, tab_name='气压' ) weather.add( chart=humidity, tab_name='湿度' ) weather.render_notebook() 生成福建气候图 from pyecharts.charts import Map fujian_city_temp = [list([z[0]+'市', z[1]]) for z in zip(df['城市'],df['温度'],df['省份']) if z[2] == '福建'] fujian_city_pres = [list([z[0]+'市', z[1]]) for z in zip(df['城市'],df['气压'],df['省份']) if z[2] == '福建'] fujian_city_humi = [list([z[0]+'市', z[1]]) for z in zip(df['城市'],df['湿度'],df['省份']) if z[2] == '福建'] temp = ( Map() .add("福建气温" , fujian_city_temp,"福建") .set_global_opts( title_opts=opts.TitleOpts(title="Map-福建地图"), visualmap_opts=opts.VisualMapOpts(min_=-30.0, max_=30.0) ) ) pres = ( Map() .add("福建气压" , fujian_city_pres,"福建") .set_global_opts( title_opts=opts.TitleOpts(title="Map-福建地图"), visualmap_opts=opts.VisualMapOpts(min_=900, max_=1050) ) ) humi = ( Map() .add("福建湿度" , fujian_city_humi,"福建") .set_global_opts( title_opts=opts.TitleOpts(title="Map-福建地图"), visualmap_opts=opts.VisualMapOpts(min_=0, max_=100) ) ) weather = Tab( page_title='福建气象') weather.add( chart=temp, tab_name='气温' ) weather.add( chart=pres, tab_name='气压' ) weather.add( chart=humi, tab_name='湿度' ) weather.render_notebook()

读取的数据有各个省市的数据,如果需要生成其他省份的数据,简单的修改一下参数就好了,关于pyecharts API参数方面的知识,可以自行上 pyecharts官方文档查阅



【本文地址】


今日新闻


推荐新闻


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