当前位置: 首页 > news >正文

【数据可视化-75】北京密云区2025年7月暴雨深度分析:Python + Pyecharts 炫酷大屏可视化(含完整数据、代码)

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

【数据可视化-75】🌩️ 北京密云区2025年7月暴雨深度分析:Python + Pyecharts 炫酷大屏可视化(含完整数据、代码)

    • 一、引言
    • 二、数据集介绍
    • 三、环境准备
    • 四、数据预处理
    • 五、可视化分析
      • 5.1 降雨量面积图
      • 5.2 日降雨量柱状图
      • 5.3 日最高温和最低温折线图
      • 5.4 AQI 柱状图
      • 5.5 风向玫瑰图
      • 5.6 降雨量与 AQI 散点图
      • 5.7 风向频率统计词云图
    • 六、组合大屏
    • 七、分析总结
      • 7.1 社会影响
      • 7.2 防范建议


一、引言

  2025年7月,北京市密云区遭遇了罕见的特大暴雨,多个站点的降雨量突破历史极值。暴雨引发了山洪、泥石流、滑坡等次生灾害,给当地居民的生活和财产带来了巨大影响。本文将基于密云区2025年7月的天气数据集,使用 Python 和 Pyecharts 构建一个炫酷的黑色大屏,从多个维度分析暴雨的形成机制和社会影响。

二、数据集介绍

  数据集包含以下字段:

  • 日期:日期
  • 白天/晚上:Day 或 Night
  • 高温:白天最高温度(℃)
  • 低温:夜间最低温度(℃)
  • AQI:空气质量指数
  • 风向:16个方向(如北、东北、东等)
  • 降雨量:当日降雨量(mm)

三、环境准备

  在开始之前,请确保安装了以下库:

pip install pandas pyecharts

四、数据预处理

  我们首先读取数据,并进行必要的预处理。

import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import ThemeType# 读取数据
df = pd.read_csv("miyun_weather_202507.csv")# 将日期列转换为日期格式
df['日期'] = pd.to_datetime(df['日期'], format="%m月%d日")# 提取日期字符串
df['日期_str'] = df['日期'].dt.strftime('%m-%d')df['高温'] = df['高温'].str.replace('℃', '').astype(int)  
df['低温'] = df['低温'].str.replace('℃', '').astype(int)  

五、可视化分析

  接下来,我们将从多个角度对数据进行可视化分析。

5.1 降雨量面积图

# 降雨量面积图
area_rain = (Line(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="#000")).add_xaxis(df['日期_str'].tolist()).add_yaxis("降雨量 (mm)", df['降雨量'].tolist(), is_smooth=True, linestyle_opts=opts.LineStyleOpts(width=2, curve=0.3)).set_global_opts(title_opts=opts.TitleOpts(title="7月每日降雨量面积图", subtitle="单位:毫米"),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),yaxis_opts=opts.AxisOpts(name="降雨量 (mm)"),tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross")).set_series_opts(areastyle_opts=opts.AreaStyleOpts(opacity=0.5, color=JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset:0,color:'#00f2fe'},{offset:1,color:'#4facfe'}])""")))
)

在这里插入图片描述

5.2 日降雨量柱状图

  我们首先查看7月份每天的降雨量。

# 日降雨量柱状图
bar_rain = (Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="#000")).add_xaxis(df['日期_str'].tolist()).add_yaxis("降雨量 (mm)", df['降雨量'].tolist(), itemstyle_opts=opts.ItemStyleOpts(color="#00f2fe")).set_global_opts(title_opts=opts.TitleOpts(title="7月每日降雨量", subtitle="单位:毫米"),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),yaxis_opts=opts.AxisOpts(name="降雨量 (mm)"),visualmap_opts=opts.VisualMapOpts(is_show=True,pos_top="middle",pos_left="right",orient="vertical",min_=0,max_=df['降雨量'].max(),range_color=["#00f2fe", "#4facfe", "#00aaff"]))
)

在这里插入图片描述

5.3 日最高温和最低温折线图

  接下来,我们查看7月份每天的最高温和最低温。

# 日最高温和最低温折线图
line_temp = (Line(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="#000")).add_xaxis(df['日期_str'].tolist()).add_yaxis("高温 (℃)", df['高温'].tolist(), is_smooth=True, linestyle_opts=opts.LineStyleOpts(width=2, curve=0.3)).add_yaxis("低温 (℃)", df['低温'].tolist(), is_smooth=True, linestyle_opts=opts.LineStyleOpts(width=2, curve=0.3)).set_global_opts(title_opts=opts.TitleOpts(title="7月每日最高温和最低温", subtitle="单位:摄氏度"),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),yaxis_opts=opts.AxisOpts(name="温度 (℃)"),tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"))
)

在这里插入图片描述

5.4 AQI 柱状图

  我们再看看7月份每天的 AQI 情况。

# AQI 柱状图
bar_aqi = (Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="#000")).add_xaxis(df['日期_str'].tolist()).add_yaxis("AQI", df['AQI'].tolist(), itemstyle_opts=opts.ItemStyleOpts(color="#ffde93")).set_global_opts(title_opts=opts.TitleOpts(title="7月每日AQI", subtitle="空气质量指数"),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),yaxis_opts=opts.AxisOpts(name="AQI"),visualmap_opts=opts.VisualMapOpts(is_show=True,pos_top="middle",pos_left="right",orient="vertical",min_=df['AQI'].min(),max_=df['AQI'].max(),range_color=["#ffde93", "#ffc107", "#ff9800"]))
)

在这里插入图片描述

5.5 风向玫瑰图

  我们再看看7月份风向的分布情况。

# 风向玫瑰图
rose_wind = (Pie(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="#000")).add("", list(df['风向'].value_counts().items()), radius=[30, 100], center=["50%", "50%"], rosetype="radius").set_global_opts(title_opts=opts.TitleOpts(title="7月风向分布"),legend_opts=opts.LegendOpts(is_show=True,orient="vertical", pos_top="15%", pos_left="2%")).set_series_opts(label_opts=opts.LabelOpts(is_show=True))
)

在这里插入图片描述

5.6 降雨量与 AQI 散点图

  我们再看看降雨量与 AQI 之间的关系。

# 降雨量与 AQI 散点图
scatter_rain_aqi = (Scatter(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="#000")).add_xaxis(df['AQI'].tolist()).add_yaxis("降雨量 (mm)", df['降雨量'].tolist(), symbol_size=10).set_global_opts(title_opts=opts.TitleOpts(title="降雨量与 AQI 的关系"),xaxis_opts=opts.AxisOpts(name="AQI"),yaxis_opts=opts.AxisOpts(name="降雨量 (mm)"),visualmap_opts=opts.VisualMapOpts(type_="size",max_=df['降雨量'].max(),min_=0,range_size=[5, 20]))
)

在这里插入图片描述

5.7 风向频率统计词云图

  我们再看看7月份风向的分布情况的词云图。

# 数据分析维度四:风向频率统计  
wind_direction_counts = df['风向'].value_counts()  
wind_data = list(zip(wind_direction_counts.index.tolist(), wind_direction_counts.values.tolist()))  
wordcloud = (  WordCloud(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="#000"))  .add("", wind_data, word_size_range=[20, 100])  .set_global_opts(  title_opts=opts.TitleOpts(title="风向频率统计"),  tooltip_opts=opts.TooltipOpts(is_show=True)  )  
)  

在这里插入图片描述

六、组合大屏

  最后,我们将所有图表组合成一个炫酷的大屏。

# 组合大屏
page = Page(layout=Page.DraggablePageLayout)
page.add(area_rain,bar_rain, line_temp, bar_aqi, rose_wind, scatter_rain_aqi,wordcloud)
page.render("miyun_weather_dashboard.html")
print("✅ 已生成 miyun_weather_dashboard.html")

在这里插入图片描述

七、分析总结

  通过上述可视化分析,我们可以清晰地看到7月份密云区的天气情况,特别是暴雨的形成机制和社会影响:

  1. 降雨量:7月26日和27日降雨量极高,达到特大暴雨级别,这与新闻报道中的暴雨红色预警相符合。
  2. 温度:高温和低温的变化与降雨量有一定的相关性,高温天气可能加剧了暴雨的形成。
  3. AQI:空气质量指数在暴雨期间有所下降,说明暴雨对空气污染有一定的冲刷作用。
  4. 风向:风向的分布显示了暴雨期间的风向变化,可能与暴雨的移动路径有关。

7.1 社会影响

  暴雨引发了山洪、泥石流、滑坡等次生灾害,给当地居民的生活和财产带来了巨大影响。建议在暴雨期间加强预警和防范措施,减少灾害损失。

7.2 防范建议

  1. 加强预警:及时发布暴雨预警信息,提醒居民做好防范准备。
  2. 加固设施:对山区和低洼地区的基础设施进行加固,减少灾害风险。
  3. 应急救援:建立应急救援机制,及时响应灾害事件,减少人员伤亡和财产损失。

  希望这篇文章能帮助你更好地理解和分析密云区的暴雨情况。如果你有任何问题或建议,欢迎在评论区留言!🎉


http://www.dtcms.com/a/303982.html

相关文章:

  • Prometheus + Grafana + Micrometer 监控方案详解
  • Java:为什么需要通配符捕获(wildcard capture)
  • HbuilderX开发小程序
  • 定制开发开源AI智能名片S2B2C商城小程序对流量重构与价值提升的作用研究
  • 使用git托管keil工程
  • React函数组件的“生活管家“——useEffect Hook详解
  • C++:stack与queue的使用
  • 40+个常用的Linux指令——下
  • 基于变频与移相混合控制(PFM+PSM)的全桥LLC谐振变换器仿真模型
  • 机械臂抓取的无模型碰撞检测代码
  • 仿函数+优先级队列priority_queue的模拟实现
  • P2910 [USACO08OPEN] Clear And Present Danger S
  • AutoGen Agent 使用指南
  • 华为HCIA-Cloud Service 从知识到实践的学习指南
  • SQL排查、分析海量数据以及锁机制
  • WebRTC(十四):WebRTC源码编译与管理
  • Webpack 优化策略
  • 如何用即构ZEGO SDK和uni-app开发一款直播带货应用?
  • uniapp 如果进入页面输入框自动聚焦,此时快速返回页面或者跳转到下一个页面,输入法顶上来的页面出现半屏的黑屏问题。
  • 使用JavaScript实现轮播图的任意页码切换和丝滑衔接切换效果
  • uniapp 实现全局变量
  • 【数据结构】用堆实现排序
  • vue3+vite 使用liveplayer加载视频
  • MySQL MVCC:并发神器背后的原理解析
  • 网工知识——OSPF摘要知识
  • [工具类] 分片上传下载,MD5校验
  • echarts饼图
  • 封装$.ajax
  • 一个人开发一个App(数据库)
  • OpenAI Python API 完全指南:从入门到实战