对北京PM2.5进行数据可视化分析(数据来源于爱数科)

一、部分数据集展示
在这里插入图片描述此数据集为原始数据没有进行加工改造
二、代码展示

在这里插入代码片
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['simhei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
# 输出pandas全部数据
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
# 读数据index_col索引
data=pd.read_csv("北京PM2.5数据数据集.csv",index_col=['No'])
# 数据以平均值进行填充 inplace为True 表示不创建新的对象,对原始数据直接改变
data.fillna(data.mean(),inplace=True)
#将float类型转换为int便于可视化展示。astype类型转换
data['TEMP']=data['TEMP'].astype('int')
data['year']=data['year'].astype('int')
data['PRES']=data['PRES'].astype('int')
data['Iws']=data['Iws'].astype('int')
在这里插入代码片
```# 转换为热图需要的格式,
correlation=data[["year","month","day","hour","DEWP","TEMP","PRES","cbwd","Iws","Is","Ir","pm2.5",]].corr()
sns.heatmap(correlation,vmax=1,vmin=-1,square=True,annot=True,cmap=plt.get_cmap('Oranges'),fmt='.2f')
# 图片的展示
plt.show()

# 箱型图展示
boxplot=data.boxplot()
# 图片的展示
plt.show()

```python
在这里插入代码片
s=data.groupby(['month','cbwd',])['pm2.5'].mean().astype('int').unstack()
print(s)
s1=[97,82,167,160]
s2=[90,103,133,177]
s3=[83,71,110,130]
s4=[80,51,102,99]
s5=[77,56,89,92]
s6=[76,60,109,100]
s7=[84,54,107,100]
s8=[77,57,89,90]
s9=[74,61,98,99]
s10=[127,78,139,141]
s11=[109,77,128,148]
s12=[99,68,126,157]
zk=["NE","NW","SE","cv"]



fig,ax=plt.subplots(2,6, figsize=(20,10))
ax[0][0].pie(s1,labels=zk,  # 设置饼图标签
        autopct="(%1.1f%%)", #饼块内标签。
        colors=("r", "blue", "#88c999", "yellow" ),
        explode=[0.1, 0.1, 0.1, 0.1])
ax[0][0].axis('equal')#x,y轴刻度一致,保证饼图为圆形
ax[0][0].legend(loc='best')
ax[0][0].set_title('1月份pm2.5占比')

ax[0][1].pie(s2,
        labels=zk,  # 设置饼图标签
        autopct="(%1.1f%%)", #饼块内标签。
        colors=("r", "blue", "#88c999", "yellow" ),
        explode=[0.1, 0.1, 0.1, 0.1])
ax[0][1].axis('equal')#x,y轴刻度一致,保证饼图为圆形
ax[0][1].legend(loc='best')
ax[0][1].set_title('2月份pm2.5占比')

ax[0][2].pie(s3,
        labels=zk,  # 设置饼图标签
        autopct="(%1.1f%%)", #饼块内标签。
             colors=("r", "blue", "#88c999", "yellow"),
             explode=[0.1, 0.1, 0.1, 0.1])
ax[0][2].axis('equal')#x,y轴刻度一致,保证饼图为圆形
ax[0][2].legend(loc='best')
ax[0][2].set_title('3月份pm2.5占比')


ax[0][3].pie(s4,
        labels=zk,  # 设置饼图标签
        autopct="(%1.1f%%)", #饼块内标签。
        colors=("r", "blue", "#88c999", "yellow" ),
        explode=[0.1, 0.1, 0.1, 0.1])
ax[0][3].axis('equal')#x,y轴刻度一致,保证饼图为圆形
ax[0][3].legend(loc='best')
ax[0][3].set_title('4月份pm2.5占比')

ax[0][4].pie(s5,
        labels=zk,  # 设置饼图标签
        autopct="(%1.1f%%)", #饼块内标签。
             colors=("r", "blue", "#88c999", "yellow"),
             explode=[0.1, 0.1, 0.1, 0.1])
ax[0][4].axis('equal')#x,y轴刻度一致,保证饼图为圆形
ax[0][4].legend(loc='best')
ax[0][4].set_title('5月份pm2.5占比')

ax[0][5].pie(s6,
        labels=zk,  # 设置饼图标签
        autopct="(%1.1f%%)", #饼块内标签。
             colors=("r", "blue", "#88c999", "yellow"),
             explode=[0.1, 0.1, 0.1, 0.1])
ax[0][5].axis('equal')#x,y轴刻度一致,保证饼图为圆形
ax[0][5].legend(loc='best')
ax[0][5].set_title('6月份pm2.5占比')




ax[1][0].pie(s1,labels=zk,  # 设置饼图标签
        autopct="(%1.1f%%)", #饼块内标签。
        colors=("r", "blue", "#88c999", "yellow" ),
        explode=[0.1, 0.1, 0.1, 0.1])
ax[1][0].axis('equal')#x,y轴刻度一致,保证饼图为圆形
ax[1][0].legend(loc='best')
ax[1][0].set_title('7月份pm2.5占比')

ax[1][1].pie(s2,
        labels=zk,  # 设置饼图标签
        autopct="(%1.1f%%)", #饼块内标签。
        colors=("r", "blue", "#88c999", "yellow" ),
        explode=[0.1, 0.1, 0.1, 0.1])
ax[1][1].axis('equal')#x,y轴刻度一致,保证饼图为圆形
ax[1][1].legend(loc='best')
ax[1][1].set_title('8月份pm2.5占比')

ax[1][2].pie(s3,
        labels=zk,  # 设置饼图标签
        autopct="(%1.1f%%)", #饼块内标签。
             colors=("r", "blue", "#88c999", "yellow"),
             explode=[0.1, 0.1, 0.1, 0.1])
ax[1][2].axis('equal')#x,y轴刻度一致,保证饼图为圆形
ax[1][2].legend(loc='best')
ax[1][2].set_title('9月份pm2.5占比')


ax[1][3].pie(s4,
        labels=zk,  # 设置饼图标签
        autopct="(%1.1f%%)", #饼块内标签。
        colors=("r", "blue", "#88c999", "yellow" ),
        explode=[0.1, 0.1, 0.1, 0.1])
ax[1][3].axis('equal')#x,y轴刻度一致,保证饼图为圆形
ax[1][3].legend(loc='best')
ax[1][3].set_title('10月份pm2.5占比')

ax[1][4].pie(s5,
        labels=zk,  # 设置饼图标签
        autopct="(%1.1f%%)", #饼块内标签。
             colors=("r", "blue", "#88c999", "yellow"),
             explode=[0.1, 0.1, 0.1, 0.1])
ax[1][4].axis('equal')#x,y轴刻度一致,保证饼图为圆形
ax[1][4].legend(loc='best')
ax[1][4].set_title('11月份pm2.5占比')

ax[1][5].pie(s6,
        labels=zk,  # 设置饼图标签
        autopct="(%1.1f%%)", #饼块内标签。
             colors=("r", "blue", "#88c999", "yellow"),
             explode=[0.1, 0.1, 0.1, 0.1])
ax[1][5].axis('equal')#x,y轴刻度一致,保证饼图为圆形
ax[1][5].legend(loc='best')
ax[1][5].set_title('12月份pm2.5占比')

# 图片的展示
plt.show()



fig, ax = plt.subplots(1, 3, figsize=(16,8))
s=data.groupby(['Is'])['pm2.5'].mean()
s1=data.groupby(['Ir'])['pm2.5'].mean()
s.plot(kind='line',title='积小时雪下的pm2.5',ax=ax[0])
s1.plot(kind='line',title='积小时雨下的pm2.5',ax=ax[0])
s.plot(kind='bar',title='积小时雪下的pm2.5',ax=ax[1])
s1.plot(kind='bar',title='积小时雨下的pm2.5',ax=ax[2])
# 图片的展示
plt.show()

# "DEWP","TEMP"
# "DEWP","TEMP","PRES","cbwd","Iws","Is","Ir"
fig, ax = plt.subplots(2, 2, figsize=(16,8))
s1=data.groupby(["TEMP",'year',])['pm2.5'].mean().astype('int').unstack()
s1.plot(kind='line',title='不同温度下的pm2.5',ax=ax[0][0])
s2=data.groupby(["DEWP",'year',])['pm2.5'].mean().astype('int').unstack()
s2.plot(kind='line',title='不同露点温度的pm2.5',ax=ax[0][1])
s3=data.groupby(["cbwd",'year',])['pm2.5'].mean().astype('int').unstack()
s3.plot(kind='line',title='不同风向下的pm2.5',ax=ax[1][0])
s4=data.groupby(["Iws",'year',])['pm2.5'].mean().astype('int').unstack()
s4.plot(kind='line',title='累积风速下的pm2.5',ax=ax[1][1])
# 图片的展示
plt.show()

部分可视化图片展示

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

司空良

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

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

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

打赏作者

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

抵扣说明:

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

余额充值