大数据分析技术

陈清华、田启明、施郁文等

目录

  • 课程简介
    • ● 课程简介
  • 环境准备
    • ● Anaconda环境安装与使用
    • ● Pycharm环境安装
    • ● 常用第三方包的安装与配置
  • 项目一 电影数据统计
    • ● 任务简介
    • ● 数据获取
    • ● 数据解析
    • ● 数据分析
    • ● 数据可视化
    • ● 课堂思政:新型冠状病毒疫情分析与可视化
    • ● 课堂思政:中国工匠精神
  • 项目二 电影数据分析(回归)
    • ● 任务简介
    • ● 使用一元线性回归分析电影票房数据
    • ● 使用多项式回归分析电影票房数据
    • ● 使用多元线性回归分析电影票房数据
    • ● 课堂实训:工资分析
  • 项目三 爬取房产租赁数据
    • ● 任务简介
    • ● 电影数据爬取
    • ● 房产租赁数据爬取
    • ● 房产租赁数据统计
    • ● 课后实训:二手房数据爬取
    • ● 课堂思政:疫情数据的爬取与可视化
  • 项目四 房屋租赁数据分析与可视化
    • ● 任务简介
    • ● 使用箱形图展现租赁价格分布特征
    • ● 使用散点图展现房屋面积与租赁价格的关系
    • ● 使用饼图展现不同行政区域的可租赁房源占比
    • ● 使用折线图可视化房间数与租赁价格的关系
    • ● 使用热力图展现地理位置的影响
    • ● 课后实训:二手房数据分析
    • ● 课堂思政:疫情数据分析与可视化
  • 项目五 身高与体重数据分析(分类器)
    • ● 使用身高、体重数据进行性别分类
      • ● 使用逻辑回归进行性别分类
      • ● 使用朴素贝叶斯进行性别分类
      • ● 使用决策树模型进行性别分类
      • ● 使用支持向量机进行性别分类
    • ● 使用支持向量机进行肥胖程度分类
    • ● 课后实训: 身高体重数据分析(分类器)
  • 项目六 鸢尾花分类
    • ● 任务简介
    • ● 使用K近邻对鸢尾花进行分类
    • ● 使用随机森林对鸢尾花进行分类
    • ● 使用神经网络对鸢尾花进行分类
  • 项目七 电影评分数据分析(聚类)
    • ● 任务简介
    • ● 使用BDSCAN确定质心个数
    • ● 使用K-Means对观影用户进行聚类
  • 项目八 人脸检测与人脸识别
    • ● 任务简介
    • ● 图像中的人脸检测
    • ● 视频中的人脸检测
    • ● 图像中的人脸识别
    • ● 视频中的人脸识别
    • ● 课后实训:眼睛与笑脸检测
    • ● 课堂思政:人工智能与弯道超车
  • 项目九 手写数字识别应用
    • ● 任务简介
    • ● 图像数据集准备
    • ● 使支持向量机识别手写数字
    • ● 使用神经网络识别手写数字
    • ● 课后实训:使用不同的机器学习方法识别数字手写体
  • 项目十  深度学习在行为识别中的应用
    • ● 任务简介
    • ● 使用卷积神经网络识别行为
    • ● 使用循环神经网络识别行为
    • ● 课后实训:电影评论数据分析
  • 项目十一 TensorFlow与神经网络
    • ● 任务简介
    • ● 使用单层神经网络预测花瓣宽度
    • ● 设计多层神经网络实现鸢尾花分类
    • ● 课后实训:卷积神经网络的实现与应用
  • 项目综合实训(17级学生案例)
    • ● 综合实训要求
    • ● 确定数据采集目标
    • ● 数据采集与预处理
    • ● 数据统计与分析
    • ● 数据分析与预测
    • ● 数据分类应用
    • ● 17级实训案例:二手车数据获取与市场分析
房产租赁数据爬取

任务目标

为分析房产面积、房间数、地理位置对房产租赁价格的影响,我们从网络上爬取用户发布的实时信息。为方便解析网页,我们可以利用很多便捷的第三方工具来方便地取和分析HTML/XML数据。

环境准备

目前,有许多优秀的库包,用于爬取、分析网页数据。包括requests、BeautifulSoupScrapy等。本项目中配置并使用了requests、BeautifulSoup4这两个库。

任务步骤

任务2:从网页中,如http://zu.wz.***.com/house爬取温州市区房产租赁的信息,包括信息标题、房间数、面积、区域、所属行政区及其他,并保存为result.csv文件。阅读到的网站信息截图示例如下图所示。

         

    下面就该项任务做一个简单的说明与介绍:

       


  • 步骤一:撰写代码,实现网络数据爬取、页面分析和数据保存。代码示例如下(网站为防爬虫,今天可用的代码,明天不一定通用,发挥你们自主能力的时候到了,你可以用已经学过的Scrapy框架来完成,加油):

 

#!/usr/bin/Python
 # -*- coding: gbk -*-
 #
导入
 
import requests
 
from bs4 import BeautifulSoup
 
import csv
 
import os
 
# 定义一次爬取的函数
 
def getData(url):
    
# 设置模拟的请求头
    
headers = { 'User-Agent': 'Mozilla/5.0  (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140  Safari/537.36'}
    
# 向网页发起请求
    
data=requests.get(url,headers=headers)
    
# 设置编码为gbk
    
data.encoding='gbk'
    
# 使用BeautifulSoup解析网页
    
soup = BeautifulSoup(data.text, "html.parser")
    
# 查找所有标签ptitle属性对应的值
    
title=soup.find_all("p","title")
     area=soup.find_all(
"p","gray6 mt12")
    
concretedata = soup.find_all("p","font15 mt12 bold")
     price = soup.select(
"#listBox > div.houseList > dl > dd  > div.moreInfo > p > span")
     dic = []
    
for title, price, concretedata, area in zip(title, price, concretedata, area):
        
# concretedata中的内容去空格并切片
        
detail = concretedata.get_text().strip().split('|')
        
# 准备好写入字典的内容
        
last_data = {
            
"title":  title.get_text().strip(),
            
"fj":detail[1][0:1].strip(),
            
"mj": detail[2][0:-1].strip(),
            
"price":  price.get_text().strip(),
            
"concretedata":concretedata.get_text().strip(),
            
"area":  area.get_text().strip('-'),
            
"district":area.get_text()[0:2]
         }
        
#添加到dic列表
        
dic.append(last_data)
        
#print(title.get_text().strip() +'\t'+ concretedata.get_text().strip()  + '\t'+ price.get_text().strip() + '\t'+area.get_text().strip())
     #
返回列表
    
return dic
 
 header = [
'title','fj','mj','price','concretedata','area','district']
 
# 用追加的方式打开result.csv文件
 
fp = open('result.csv','w+')
 url =
"http://zu.wz.***.com/house"
 
f_csv = csv.DictWriter(fp,header)
 
# 在打开的文件中写入列标签
 
f_csv.writeheader()
 
# csv写入返回的所有房产信息
 
f_csv.writerows(getData(url))
 
# 循环爬取多个网页中的数据
 
for i in range(2,9):
     url1 = url +
'/i3' + str(i)
    
# 保存数据至打开的文件中
    
f_csv.writerows(getData(url))
 fp.close()

 
  • 步骤三:运行爬取程序,保存的文件内容如图所示。


不难发现,通过API爬取网站信息就很容易访问到珍贵的数据。但大部分商家并不太希望有人去大量地下载这些有用的数据。因为开放这些数据会催生许多有价值的消费应用程序,对原商家来说无疑是一笔财富的流出。所以很多网站会对数据做了封装,让数据变得不容易被爬取。因此,有时要深入分析页面源码。