数据可视化实战(二)

将每个城市在每个月份平均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 北京 2010 1 1 23 129 -17.0 41.0 1020.0 -5.0 cv 0.89 0.0 0.0
1 北京 2010 1 2 0 148 -16.0 38.0 1020.0 -4.0 SE 1.79 0.0 0.0
2 北京 2010 1 2 1 159 -15.0 42.0 1020.0 -4.0 SE 2.68 0.0 0.0
3 北京 2010 1 2 2 181 -11.0 63.5 1021.0 -5.0 SE 3.57 0.0 0.0
4 北京 2010 1 2 3 138 -7.0 85.0 1022.0 -5.0 SE 5.36 0.0 0.0
5 北京 2010 1 2 4 109 -7.0 85.0 1022.0 -5.0 SE 6.25 0.0 0.0
6 北京 2010 1 2 5 105 -7.0 92.0 1022.0 -6.0 SE 7.14 0.0 0.0
7 北京 2010 1 2 6 124 -7.0 92.0 1023.0 -6.0 SE 8.93 0.0 0.0
8 北京 2010 1 2 7 120 -7.0 85.0 1024.0 -5.0 SE 10.72 0.0 0.0
9 北京 2010 1 2 8 132 -8.0 85.0 1024.0 -6.0 SE 12.51 0.0 0.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
月份 1 2 3 4 5 6 7 8 9 10 11 12
城市
上海 80.77 59.58 59.38 55.32 52.23 41.48 31.03 26.61 32.69 42.28 64.02 86.54
北京 113.80 120.93 96.34 83.40 76.67 89.56 88.48 73.75 78.75 112.72 108.47 107.49
广州 80.03 58.73 48.75 67.04 46.95 35.34 26.14 38.63 40.47 60.10 53.13 61.99
成都 161.32 110.04 96.71 67.99 68.56 53.81 54.05 61.26 60.25 84.76 82.13 116.08
沈阳 111.04 103.11 77.39 65.51 53.89 47.88 42.25 43.94 46.79 89.03 101.67 112.61
df2.loc["上海"]
df2.index # Index(['上海', '北京', '广州', '成都', '沈阳'], dtype='object', name='城市')
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['font.size'] = 18

months = 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.0 13.0 -12.0 -19.0
上海 -1.0 17.0 -2.0 -4.0
广州 7.6 20.5 6.4 1.7
成都 5.0 18.0 5.0 -2.0
沈阳 -14.0 10.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 np


fig,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')

在这里插入图片描述

相关推荐

  1. 试题(

    2024-03-19 16:34:04       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-19 16:34:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-19 16:34:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-19 16:34:04       87 阅读
  4. Python语言-面向对象

    2024-03-19 16:34:04       96 阅读

热门阅读

  1. 2024年旅游经济与文化传播国际会议(ICTECC 2024)

    2024-03-19 16:34:04       37 阅读
  2. Ubuntu22.04不能连接网络、没有网络图标

    2024-03-19 16:34:04       48 阅读
  3. docker 部署redis

    2024-03-19 16:34:04       47 阅读
  4. 如何在 docker 容器内部运行 docker命令

    2024-03-19 16:34:04       36 阅读
  5. 编译nodejs源码(包括升级gcc)

    2024-03-19 16:34:04       41 阅读
  6. 【Docker】wordpress 容器化部署

    2024-03-19 16:34:04       39 阅读
  7. 服务器发生数据包丢失的原因是什么?

    2024-03-19 16:34:04       49 阅读
  8. C语言自学笔记15----C 语言 void指针

    2024-03-19 16:34:04       42 阅读
  9. spring boot 运行mongodb sql

    2024-03-19 16:34:04       45 阅读
  10. MongoDB使用笔记

    2024-03-19 16:34:04       38 阅读
  11. 【生活知识-茶叶】

    2024-03-19 16:34:04       40 阅读