Python分析上海的空⽓质量指数
⼀.学习知识准备
在数据可视化分析中,按上篇⽂章,我们要学习numpy科学计算库以及matplotlip可视化分析,这边我⽤了request库下载了上海的空⽓质量指数的html⽂本,并爬取了数据进⾏json封装,因此我们也要学会从⽂本获取json数据并解析,然后需要构建numpy数组,⽤折线图显⽰出来
第⼀个知识点:request库
Requests 是⽤Python语⾔编写,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库。它⽐ urllib 更加⽅便,可以节约我们⼤量的⼯作,完全满⾜HTTP测试需求。
菜鸟教程python函数各种请求⽅式:
import requests
requests.post('/post')
requests.put('/put')
requests.delete('/delete')
requests.head('/get')
requests.options('/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 id()打开或关闭轴⽹格,⽹格⼀样能设置颜⾊线型
rcParams[‘font.sans-serif’] 图表中⽂字体:Params[‘font.sans-serif’]= [‘SimHei’]微软雅⿊;或=[‘Microsoft Yahei’]⿊体
rcParams[‘axes.unicode_minus’] 图表轴负数符号显⽰问题:
⼆.编码实现
学了上⾯的四个知识点就可以进⾏空⽓质量指数可视化:
import matplotlib.pyplot as plt
import json
import numpy as np
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.tick_params(labelsize='10')
plt.title(str_title)
plt.ylabel('空⽓质量指数')
plt.xlabel('上海各地区')
for a,b in zip(x,y):
<(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()
三.总结
这⼏天⼀直学习这⼏个库,就实际利⽤了起来,对以后的数据挖掘分析很有帮助,可视化使枯燥的数据更加直观表达,我相信深⼊学习这⼏
个库,可以计算出更有价值的数据信息,继续加油
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论