将每个城市在每个月份平均PM2.5绘制成折线图
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('./PM2.5.xlsx')
display(df.head(10))
df.shape
| 城市 | 年份 | 月份 | 日期 | 小时 | 季节 | 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 |
---|
df2 = df.groupby(by = ['城市','月份'])[['PM2.5']].mean().round(2)
df2 = df2.unstack(level = -1)
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
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['font.size'] = 18
months = df2.columns
plt.figure(figsize=(12, 6))
for city in df2.index:
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[['北京','上海','广州','沈阳','成都']]
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[['北京','上海','广州','沈阳','成都']]
ax = df7.plot(ax = axes[1,1])
_ = ax.set_xticks(np.arange(0,24))
plt.savefig('./各个城市最大风速随时间变化趋势.png')