数据分析与数据挖掘的步骤流程

1、明确目标。首先要熟悉业务背景,了解业务背景后,才能明确目标。如去分析电商业务流量与转化率的关系,广告业务如何确定单次点击竞价增加点击率和有效访问率,产品业务根据PV,UV,用户留存增长ARPU(利润或者金额),供应链业务:如工厂,饭店的订货量预测,营销业务:根据已有数据如何提高ROI(投资回报率)及金融行业的风险控制等等。

2、数据搜集。哪些数据会影响问题答案,然后搜集相关的数据。如网上已有数据,爬虫,API。

3、数据清洗。数据质量分析,缺失值(空值),异常值(异常),一致性分析(不能矛盾,不能是多数据源数据,消除量纲影响,保证数据来源一致,时间节点一致)。

4、构建模型。常用的数据挖掘模型,回归预测,分类,聚类。如线性回归,逻辑回归,决策树,SVM,GBDT, 贝叶斯,神经网络,K-means聚类模型等等。后面有时间总结一下。

5、模型评估。如何评价模型的好坏,是否存在过拟合,可采用一些预测准确率,均方误差,交叉熵损失函数等。

6、应用部署。基于业务要服务于客户,需要将模型部署到系统中。如推荐系统,精准营销等。

本次利用爬虫爬取某气象网站的天气AQI(Air Quality Index, 空气质量指数)数据,并用图表工具分析数据,来判断福建省福州市,泉州市,厦门市近5年来空气质量是否有某些变化。

有兴趣的可以去查一下AQI的计算公式等。

爬虫四步骤:

1、获取链接。要查找数据的网址。这里用的天气后报。

2、发送请求

3、筛选数据。目前有很多方法可以解析,正则表达式,json,bs4,xpath等等。

4、保存数据

代码如下:

import time
import requests
import random
from bs4 import BeautifulSoup# 生成请求头,浏览器可看
headers = {'Accept': '*/*','Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.33'
}
citys = ['fuzhou', 'quanzhou', 'xiamen']
for i in range(len(citys)):filename = 'Air_AQI_' + citys[i] + '.csv'with open(filename, 'a+', encoding='utf-8-sig') as f:#写列标签f.write('Date' + ',' + 'Quality_grade' + ',' + 'AQI' + ',' + 'AQI_rank' + ',' + 'PM2_5' + ',' + 'PM10' + ',' + 'SO2' + ',' + 'NO2' + ',' + 'CO' + ',' + 'O3' + '\n')for year in range(2017,2022):#近五年for month in range(1, 13):  # 12个月# 停顿几秒,避免消耗对方服务器过多资源seconds = random.randint(2, 5)time.sleep(seconds)# 1.获取网址if citys[i] == 'fuzhou':#分支处理,福州的url有fujianurl = 'http://www.tianqihoubao.com/aqi/fujian' + citys[i] + '-'+str("%04d" % year) +  str("%02d" % month) + '.html'else:url = 'http://www.tianqihoubao.com/aqi/' + citys[i] + '-' + str("%04d" % year) + str("%02d" % month) + '.html'# 2.发送请求response = requests.get(url=url, headers=headers)#得到响应# 3.筛选数据soup = BeautifulSoup(response.text, 'html.parser')#用靓汤提取tr = soup.find_all('tr')#用 BeautifulSoup 能更快速便捷地进行解析和提取,也可以用re,xpath等方法for k in tr[1:]:#从1开始是不生成列标题td = k.find_all('td')Date = td[0].get_text().strip()#去掉首尾换行符Quality_grade = td[1].get_text().strip()AQI = td[2].get_text().strip()AQI_rank = td[3].get_text().strip()PM2_5 = td[4].get_text().strip()PM10 = td[5].get_text().strip()SO2 = td[6].get_text().strip()NO2 = td[7].get_text().strip()CO = td[8].get_text().strip()O3 = td[9].get_text().strip()# 4.保存数据with open(filename, 'a+', encoding='utf-8-sig') as f:f.write(Date + ',' + Quality_grade + ',' + AQI + ',' + AQI_rank + ',' + PM2_5 +',' +PM10+ ','+SO2+ ','+NO2+ ','+CO+ ','+O3+ '\n')

爬取数据如下:

分析见另一篇文章

数据分析之爬虫实例-获取天气AQI数据-附python代码相关推荐

  1. 利用OpenSearch API检索和下载数据 附Python代码实例

    利用OpenSearch API检索和下载数据 附Python代码实例 在数据下载过程中,我们常常会需要下载非常多的数据文件,这时我们可以利用wget等软件或者编写数据下载脚本来实现数据下载的批处理. ...

  2. python 合并工作簿_Excel:快速合并多张表格或多个文件(工作簿)的数据(附Python代码)...

    Excel:快速合并多张表格或多个文件(工作簿)的数据(附Python代码) 现实工作中经常遇到将零散的原始数据合并统计的工作要求,如月度统计或年度统计等.原始数据的收集大多是按时间(如日期或小时)进 ...

  3. java解析xml实例——获取天气信息

    获取xml并解析其中的数据: package getweather.xml;import java.io.IOException; import java.util.HashMap; import j ...

  4. python 定时自动爬取_python实现scrapy爬虫每天定时抓取数据的示例代码

    1. 前言. 1.1. 需求背景. 每天抓取的是同一份商品的数据,用来做趋势分析. 要求每天都需要抓一份,也仅限抓取一份数据. 但是整个爬取数据的过程在时间上并不确定,受本地网络,代理速度,抓取数据量 ...

  5. python定时爬取数据_python实现scrapy爬虫每天定时抓取数据的示例代码

    1. 前言. 1.1. 需求背景. 每天抓取的是同一份商品的数据,用来做趋势分析. 要求每天都需要抓一份,也仅限抓取一份数据. 但是整个爬取数据的过程在时间上并不确定,受本地网络,代理速度,抓取数据量 ...

  6. python自动抓取网管软件的数据_python实现scrapy爬虫每天定时抓取数据的示例代码...

    1. 前言. 1.1. 需求背景. 每天抓取的是同一份商品的数据,用来做趋势分析. 要求每天都需要抓一份,也仅限抓取一份数据. 但是整个爬取数据的过程在时间上并不确定,受本地网络,代理速度,抓取数据量 ...

  7. python处理期货数据_获取和讯期货数据(Python版本)

    获取和讯期货数据(Python版本) 获取和讯期货数据(Python版本) Author: edwardgyw, Date: 2016-11-28 14:38:44 Tags: Python 扩展 商 ...

  8. STM32+MAX6675利用io口模拟SPI获取实时温度数据程序及代码

    STM32+MAX6675利用io口模拟SPI获取实时温度数据程序及代码 本文采用的芯片为STM32F103RCT6 温度芯片为MAX6675 因为芯片的spi口只有3个,有部分需要外接W25Q128 ...

  9. STM32+MAX6675利用SPI获取实时温度数据程序及代码

    之前写的STM32+MAX6675利用io口模拟SPI获取实时温度数据程序及代码 本文采用的芯片为STM32F103RCT6 温度芯片为MAX6675 模拟spi之前写过 里面的部分代码摘取的正点原子 ...

最新文章

  1. 华人斩获最佳Demo论文,Bengio获时间检验奖,最佳论文突破NLP传统测试方法 | ACL 2020...
  2. SpringBoot配置属性之DataSource
  3. Android的网络Http判断是否连接服务器
  4. 【机器学习】为什么GBDT可以超越深度学习
  5. 在hadoop中传递变量
  6. 微信小程序云开发校园社交二手物品跳蚤平台表白动态求助寻物组队,完整免费,配置即用
  7. 选择、插入、冒泡排序
  8. spring学习笔记01-BeanFactory和ApplicationContext的区别
  9. 暴雪插件占用服务器,暴雪为部分高负载、高排队的服务器开启免费转服服务 解决负载过高问题...
  10. Java 实现 RSA 非对称加密算法-加解密和签名验签
  11. 【龙讯module小课堂】“光”怪陆离:PWmat计算光学性质(一)
  12. Java 移位操作符
  13. android框架xUtils使用介绍
  14. Newton's Dark Secrets《牛顿探索》
  15. java画布canvas_画布(Canvas类)初探
  16. java security_java.security.NoSuchAlgorithmException
  17. 虚拟人在虚拟现实中应用的技术思考与研究
  18. 使用Node.js创建命令行工具
  19. SM2算法第十二篇:数字证书原理
  20. 大厂都喜欢这样问Redis,哨兵、持久化、主从、手撕LRU,我都整理好了

热门文章

  1. 从CSDN转战博客园
  2. centos 如何查看操作系统是哪个版本
  3. 机器学习笔记 预测的原则和风险
  4. IC设计中节省静态功耗和动态功耗的方法
  5. 输入一个字符串,将字符串中的大写字母改成小写字母,小写字母不变,其他字符忽略,然后输出转换之后的结果。
  6. 如何批量生成JAN13条码
  7. 踩坑:云服务器Nginx部署前端遇到http与https问题
  8. <Android开发> Android vold - 第三篇 vold 的NetLinkManager类简介
  9. CC++编程环境搭建-四种常用开发工具(VSCode,Dev,CodeBlocks,Clion)
  10. YOLOv5火焰识别