数据可视化实战(二)

news/2024/5/9 15:48:25

将每个城市在每个月份平均PM2.5绘制成折线图

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('./PM2.5.xlsx')
display(df.head(10))
df.shape #  (161630, 15)
城市年份月份日期小时季节PM2.5露点湿度压强温度风向累计风速降水量累计降水量
0北京20101123129-17.041.01020.0-5.0cv0.890.00.0
1北京2010120148-16.038.01020.0-4.0SE1.790.00.0
2北京2010121159-15.042.01020.0-4.0SE2.680.00.0
3北京2010122181-11.063.51021.0-5.0SE3.570.00.0
4北京2010123138-7.085.01022.0-5.0SE5.360.00.0
5北京2010124109-7.085.01022.0-5.0SE6.250.00.0
6北京2010125105-7.092.01022.0-6.0SE7.140.00.0
7北京2010126124-7.092.01023.0-6.0SE8.930.00.0
8北京2010127120-7.085.01024.0-5.0SE10.720.00.0
9北京2010128132-8.085.01024.0-6.0SE12.510.00.0
# 求PM2.5每个月份均值;根据城市和月份进行分组
df2 = df.groupby(by = ['城市','月份'])[['PM2.5']].mean().round(2)# 数据重塑
df2 = df2.unstack(level = -1)
# 删除最外层列索引PM2.5
df2.columns = df2.columns.droplevel(level=0)
df2
月份123456789101112
城市
上海80.7759.5859.3855.3252.2341.4831.0326.6132.6942.2864.0286.54
北京113.80120.9396.3483.4076.6789.5688.4873.7578.75112.72108.47107.49
广州80.0358.7348.7567.0446.9535.3426.1438.6340.4760.1053.1361.99
成都161.32110.0496.7167.9968.5653.8154.0561.2660.2584.7682.13116.08
沈阳111.04103.1177.3965.5153.8947.8842.2543.9446.7989.03101.67112.61
df2.loc["上海"]
df2.index # Index(['上海', '北京', '广州', '成都', '沈阳'], dtype='object', name='城市')
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['font.size'] = 18months = df2.columns# 创建画布和子图
plt.figure(figsize=(12, 6))# 绘制每个城市在每个月份的折线图
for city in df2.index:
#     print(city, df2.loc[city])plt.plot(months, df2.loc[city], marker='o', label=city)# 设置标题和标签
plt.title('PM2.5 Variation by City and Month')
plt.xlabel('Month')
plt.ylabel('PM2.5')
plt.xticks(months)
plt.grid(True)# 添加图例
plt.legend()# 显示图形
plt.show()

在这里插入图片描述

将每个城市在每个季节最低温度绘制柱状图

df3 = df.groupby(by = ['城市','季节'])[['温度']].min().round(2)
df3 = df3.unstack(level=-1)
df3.columns = df3.columns.droplevel(level=0)
df3 = df3[list('春夏秋冬')]
df3 = df3.loc[['北京','上海','广州','成都','沈阳']]
df3
季节
城市
北京-9.013.0-12.0-19.0
上海-1.017.0-2.0-4.0
广州7.620.56.41.7
成都5.018.05.0-2.0
沈阳-14.010.0-18.0-25.0
fig = plt.figure(figsize=(12,12))
ax = fig.add_subplot(1,1,1)
df3.plot.bar(ax = ax)
plt.grid(color = 'gray',ls = '--')
plt.ylabel('温度')
# 在中文字体下, 默认的负号, 会显示不正常
plt.rcParams['axes.unicode_minus'] = False

在这里插入图片描述

各个城市最大风速随时间变化趋势

import numpy as npfig,axes = plt.subplots(2,2,figsize = (16,12)) # 添加子视图df4 = df.groupby(by = ['城市','年份'])[['累计风速']].max().round(2)
# 数据重塑
df4 = df4.unstack(level = 0)
df4.columns = df4.columns.droplevel(0)
df4 = df4[['北京','上海','广州','沈阳','成都']]# 在第一幅子图上绘制年份与风速
df4.plot(ax = axes[0,0])
axes[0, 0].set_ylabel("风速")df5= df.groupby(by = ['城市','月份'])[['累计风速']].max().round(2)
# 数据重塑
df5 = df5.unstack(level = 0)
df5.columns = df5.columns.droplevel(0)
df5 = df5[['北京','上海','广州','沈阳','成都']]
ax = df5.plot(ax = axes[1,0]) # 子视图索引:第二行,第一列(左下角)# 设置
months = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']
ax.set_xticks(np.arange(1,13)) # 刻度
_ = ax.set_xticklabels(months,rotation = 60)df6 = df.groupby(by = ['城市','季节'])[['累计风速']].max().round(2)
# 数据重塑
df6= df6.unstack(level = 0)
# 调整行索引顺序
df6 = df6.loc[list('春夏秋冬')]
# 删除列索引
df6.columns = df6.columns.droplevel(0)
# 调整列索引顺序
df6 = df6[['北京','上海','广州','沈阳','成都']]
# ax 指定了使用第一行,第二列的子视图:右上角
df6.plot(ax = axes[0,1])df7 = df.groupby(by = ['城市','小时'])[['累计风速']].max().round(2)
# 数据重塑
df7= df7.unstack(level = 0)
df7.columns = df7.columns.droplevel(0)df7 = df7[['北京','上海','广州','沈阳','成都']]# 子视图索引1,1 == 第二行、第二列右下角
ax = df7.plot(ax = axes[1,1])# 设置
_ = ax.set_xticks(np.arange(0,24))# 保存
plt.savefig('./各个城市最大风速随时间变化趋势.png')

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/10755.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

酒店管理系统|基于Spring Boot框架+ Mysql+Java+ B/S结构的酒店管理系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…

【鸿蒙HarmonyOS开发笔记】动画过渡效果之组件内转场动画,内含ForEach动画

概述 我们在开发中难免设计组件的插入、删除过程。通过组件内转场动画,可定义组件出现、消失的效果。 组件内转场动画的接口为: transition(value: TransitionOptions)transition函数的入参为组件内转场的效果,可以定义平移、透明度、旋转…

【DataWhale学习笔记-蝴蝶书共读】大语言模型背后

从图灵测试到ChatGPT 1950年,艾伦•图灵(Alan Turing)发表论文《计算机器与智能》( Computing Machinery and Intelligence),提出并尝试回答“机器能否思考”这一关键问题。在论文中,图灵提出了“模仿游戏”&#xff…

Java项目:59 ssm小型企业办公自动化系统的设计和开发+vue

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统可以提供信息显示和相应服务, 其管理员管理部门经理,管理总经理,管理员工和员工留言以及员工工资&…

CSS案例-2.简单版侧边栏练习

效果 知识点 标签显示模式 块级元素 block-level 常见元素:<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等。 特点: 独占一行长度、宽度、边距都可以控制宽度默认是容器(父级宽度)的100%是一个容器及盒子,里面可以放行内或者…

C#进阶实践项目(俄罗斯方块)

CSharp进阶实践项目--俄罗斯方块 1.需求分析 2.复用贪吃蛇开始等场景切换的代码 &#xff08;自己写一遍&#xff0c;不难&#xff01;&#xff01;&#xff01;&#xff09; 入口&#xff1a; 更新接口&#xff1a; Game 类&#xff1a; BeginOrEndBaseScene 类&#xff1a;…