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

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官方文档查阅

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用pyecharts展示百度地图的步骤如下: 1. 安装pyecharts和百度地图插件 ``` pip install pyecharts pip install echarts-countries-pypkg # 国家地图插件 pip install echarts-china-provinces-pypkg # 中国省级地图插件 pip install echarts-china-cities-pypkg # 中国市级地图插件 pip install echarts-china-counties-pypkg # 中国县级地图插件 pip install echarts-china-misc-pypkg # 中国其它地图插件 pip install echarts-cities-js # 世界城市地图插件 pip install echarts-united_kingdom-js # 英国地图插件 pip install echarts-united_states-js # 美国地图插件 pip install echarts-canada-js # 加拿大地图插件 pip install echarts-italy-js # 意大利地图插件 pip install echarts-france-js # 法国地图插件 pip install echarts-germany-js # 德国地图插件 pip install echarts-netherlands-js # 荷兰地图插件 pip install echarts-spain-js # 西班牙地图插件 pip install echarts-brazil-js # 巴西地图插件 pip install echarts-mexico-js # 墨西哥地图插件 pip install echarts-russia-js # 俄罗斯地图插件 pip install echarts-misc-js # 其它国家地图插件 ``` 2. 创建地图 ``` from pyecharts import options as opts from pyecharts.charts import Map # 创建地图 map = Map() # 设置地图属性 map.set_global_opts( title_opts=opts.TitleOpts(title=""), visualmap_opts=opts.VisualMapOpts(max_=200), ) # 添加数据 data = [("北京", 100), ("上海", 50), ("广州", 80), ("深圳", 60)] map.add("", data) # 保存地图 map.render("map.html") ``` 3. 在百度地图上显示地图 ``` from pyecharts import options as opts from pyecharts.charts import BMap # 创建地图 bmap = BMap() # 设置地图属性 bmap.set_global_opts( title_opts=opts.TitleOpts(title=""), visualmap_opts=opts.VisualMapOpts(max_=200), bmap_opts=opts.BMapOpts( center=[116.404, 39.915], # 地图中心点坐标 zoom=11 # 缩放级别 ) ) # 添加数据 data = [("北京", 100), ("上海", 50), ("广州", 80), ("深圳", 60)] bmap.add("", data) # 保存地图 bmap.render("bmap.html") ``` 注意:使用百度地图需要在pyecharts中设置密钥,具体操作可以参考官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

volcanical

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值