Python分析上海的空气质量指数

一.学习知识准备

在数据可视化分析中,按上篇文章,我们要学习numpy科学计算库以及matplotlip可视化分析,这边我用了request库下载了上海的空气质量指数的html文本,并爬取了数据进行json封装,因此我们也要学会从文本获取json数据并解析,然后需要构建numpy数组,用折线图显示出来

  • 第一个知识点:request库

Requests 是⽤Python语⾔编写,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库。它⽐ urllib 更加⽅便,可以节约我们⼤量的⼯作,完全满⾜HTTP测试需求。

各种请求方式:

import requests
requests.post('http://httpbin.org/post')
requests.put('http://httpbin.org/put')
requests.delete('http://httpbin.org/delete')
requests.head('http://httpbin.org/get')
requests.options('http://httpbin.org/get')
  1. GET: 请求指定的页面信息,并返回实体主体。
  2. HEAD: 只请求页面的首部。
  3. POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
  4. PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
  5. DELETE: 请求服务器删除指定的页面。
  6. get 和 post比较常见 GET请求将提交的数据放置在HTTP请求协议头中
  7. POST提交的数据则放在实体数据中
  • 第二个知识点:json库

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。

JSON 函数

使用 JSON 函数需要导入 json 库:import json,详细请看菜鸟教程

函数描述
json.dumps将 Python 对象编码成 JSON 字符串
json.loads将已编码的 JSON 字符串解码为 Python 对象
  • 第三个知识点:numpy库

NumPy 是一个 Python 的第三方库,代表 “Numeric Python”,主要用于数学/科学计算。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。

使用 Numpy 我们可以轻松进行如下等计算:

  1. 数组的算数和逻辑运算。
  2. 傅立叶变换和用于图形操作的例程。
  3. 与线性代数有关的操作。 NumPy 拥有线性代数和随机数生成的内置函数。
  • 第四个知识点:matplotlib的折线图

不论是数据挖掘还是数据建模,都免不了数据可视化的问题。对于Python来说,Matplotlib是最著名的绘图库,它主要用于二维绘图,当然它也可以进行简单的三维绘图(基于spyder)。详细看plot教程

  1. plt常用参数有:
属性描述
xlabel 设置当前轴的x轴标签:plt.xlabel(‘X标签名’)
ylabel  设置当前轴的y轴标签:plt.xlabel(‘y标签名’)
title 设置当前轴的标题:plt.title(‘图例标题名’)
ylim获取或设置当前轴的y限制,plt.ylim(0,6)Y轴范围0-6;Xlim同理懒的写了
legend 在轴上放置图例:legend()无参数自动识别,也可用数字指定位置1,2,3,4试着来
show  展示所画图,spyder一般直接运行不需要此步
grid   plt.grid()打开或关闭轴网格,网格一样能设置颜色线型
rcParams[‘font.sans-serif’]   图表中文字体:plt.rcParams[‘font.sans-serif’]=[‘SimHei’]微软雅黑;或=[‘Microsoft Yahei’]黑体
rcParams[‘axes.unicode_minus’]  图表轴负数符号显示问题:plt.rcParams[‘axes.unicode_minus’] = False

 

二.编码实现
   

学了上面的四个知识点就可以进行空气质量指数可视化:

import matplotlib.pyplot as plt
import json
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
def process_json_file(filepath):

    with open(filepath,mode='r',encoding='utf-8') as f:
        citylist = json.load(f)
    return citylist

def draw_picture(str_title,city_list):




    area_list = []
    area_aqi = []
    for area in city_list:
        area_list.append(area['position_name'])
        area_aqi.append(area['aqi'])
    aqi = np.arange(10)
    for i in range(len(area_aqi)):
        aqi[i] = area_aqi[i]
    print(aqi)
    x = np.arange(10)
    y = x+aqi
    plt.figure(figsize=(10,5))
    plt.plot(x,y)
    tickpoints = np.arange(10)
    plt.xticks(tickpoints,area_list)
    plt.tick_params(labelsize='10')
    plt.title(str_title)
    plt.ylabel('空气质量指数')
    plt.xlabel('上海各地区')
    for a,b in zip(x,y):
        plt.text(a,b,b,ha='center',va='bottom',fontsize='20')
    plt.show()

def main():
    city_list = process_json_file('shanghai_aqi.json')

    str = city_list[0]
    print(str)
    str_title = str['area']+'各地区'+str['time_point']+'时间段空气质量指数图'
    print(str_title)
    draw_picture(str_title,city_list)

if __name__ == '__main__':
    main()


   
 
   三.总结

这几天一直学习这几个库,就实际利用了起来,对以后的数据挖掘分析很有帮助,可视化使枯燥的数据更加直观表达,我相信深入学习这几个库,可以计算出更有价值的数据信息,继续加油!!!
    
   
 


 



 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值