计算方法
分指数
- IAQIp = (IAQIHi - IAQILo)/(BPHi - BPLo)(Cp - BPLo) + IAQILo
IAQIp:污染物项目P的空气质量分指数
Cp:污染物项目P的质量浓度值
BPHi:Cp相近的污染物浓度限值的高位值
BPLo:Cp相近的污染物浓度限值的低位值
IAQIHi:BPHi对应的空气质量分指数
IAQILo:BPLo对应的空气质量分指数
指数
AQI = max{IAQI1,IAQI2,···,IAQIn}
IAQI:单项污染物的空气质量指数
AQI:定量描述空气质量状况的无量纲指数本质:线性缩放
AQI
1 | #线性缩放 |
JSON 数据文件
轻量级数据交换格式
对复杂数据进行表达和存储,易于阅读和理解
示例:
json = {
'a':[1,2,3,4,5],
'b':"123"
}
JSON 库
import json
编码(encoding) 将 python 数据转化成 JSON 数据
解码(decoding) 将 JSON 数据解析到 python 数据类型
dumps() //编码
loads() //解码
dump() //输出到文件
load() //从文件读入
1 | # 从文件读入 |
CSV
通用,简单文本文件
适用商业、科学领域
规则:
以行为单位,每行表示一条数据,以英文逗号分割每列数据,列名通常放置在第一行
import csv
csv.writerow(list) //将列表中的元素写入文件的一行中
csv.reader() //将每行记录作为列表返回
with open(filepath) as somefile:
for line in somefile:
print(line)
*使用 with 语句,不管是否发生异常,最后都会关闭文件,不用写 close()*
示例:
api, area, pm2_5
47, 北京, 32
63, 上海, 37
1 | #写入CSV |
os 模块
os.remove() //删除文件
os.makedirs() //创建多层目录
os.rmdir() //删除单级目录
os.remame() //重命名文件
os.path.isfile() //判断是否为文件
os.path.isdir() //判断是否为目录
os.path.join() //连接目录
# -> os.path.join(path1,path2)
# -> path1/path2
os.path.splitext() //分割文件名和扩展名
# -> os.path.splitext(tmp.txt)
# -> tmp,.txt
1 | import json |
自定义 switch
- 类模式
1 | class os_switch: |
- 字典模式
1 | switch = { |
requests 模块
简洁、简单的处理 HTTP 请求的工具
支持丰富的链接访问功能,包括 URL 获取,HTTP 回话,Cookie 记录等
get()
post()
status_code // HTTP 请求的返回状态,200表示成功,400表示失败
text // HTTP 相应内容的字符串形式,即 URL 对应的页面内容
1 | def getHtmlText(url): |
中文乱码问题
#方法1
r = requests.get(url)
html=r.content
html_doc=str(html,'utf-8')
#方法2
r=requests.get(url)
r.encoding='utf-8'
beautifulsoup4
解析 HTML 或者 XML
pip install beautifulsoup4
import bs4
find //查找第一个满足条件的节点
find_all //查找所有满足条件的节点
bs = BeautifulSoup(
url,
html_parser //指定解析器
enoding //编码格式,确保和网页编码格式一致
)
1 | # <a href="a.html" class="a_link">next page</a> |
1 | import bs4 |
批量抓取
1 | def getAllCity(url): |
pandas
分析结构化数据的工具集
基础是 Numpy 提供了高性能的矩阵运算
应用:数据挖掘,数据分析,数据清洗功能
数据分析
ser_obj = pd.Series(range(10)) // 一维数组对象,索引自动创建,索引在左,数据在右
ser_obj.index // 获取索引
ser_obj.values // 获取值
ser_obj.head(n) // 预览数据,n 前几行
ser_obj.tail(n) // 预览数据,n 后几行
ser_obj[index]
Data.Frame
通过 ndarray,dict 创建
data['列名'] // 获取单列数据
data[['列名1','列名2']] // 获取多列数据
sort_values(by = ['列名']).head(10) // 获取前 10 名,降序 ascending = False
pd.to_csv('topTen.csv',index = False) // 保存为 CSV
数据清洗
dropna() // 丢失缺失数据
fillna() // 填充缺失数据
df[过滤条件]
数据可视化
plot(kind,x,y,title,figsize)
plt.savefig()