大数据分析技术

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

目录

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

网络数据一次爬取

任务1.1从网页中爬取数据,假设爬取的数据URL为“https://www.***.com”。

  • 步骤一:准备环境,添加并配置urllib包。

  • 步骤二:撰写如下代码。

 

 

# 导入

 

import urllib
import  urllib.request

 

# 向网页https://www.***.com发起请求
 stream =
urllib.request.urlopen('https://www.***.com')
 content = stream.read()

 

# 打印utf-8解码后的内容
 
print(content.decode('utf-8'))

 
  • 步骤三:将对应URL位置“https://www.***.com”置入对应的网址,运行代码,示例部分结果如下图所示。

                             


任务1.2模拟成不同的浏览器,爬取https://www.***.com”。 

 

import urllib
 
import  urllib.request
 url =
'https://www.***.com'

 

# 模拟Magic Browser向服务器发起请求
 
rqt = urllib.request.Request(url, headers={'User-Agent':"Magic  Browser"})

 

# 打开请求访问的网页
 webpage=
urllib.request.urlopen(rqt)

 

# 从网页中读取数据
 content = webpage.read()
 
print(content.decode('utf-8'))

 

返回结果如下


为什么要这么做?就爬虫、反爬虫、反反爬虫说说你的认识。


    下面就如何实现网页下载器,做一个简单的介绍:


任务1.3从网站“http://movie.***.com/”中获取“热门电影”列表数据。

    在进入到具体的任务之前,我们先来看一段视频,对任务具体情况做一个简单介绍,并完成网页下载器的功用。


  • 步骤一:使用浏览器访问页面,需要获取数据部分的示例如下图所示,查看热门电影部分对应的源码。

    

  • 步骤二:撰写代码,获取网页数据。参考代码如下:

 

#!/usr/bin/Python
 # -*- coding: UTF-8 -*-
 #
导入
 
import urllib
 
import urllib.request
 
 url=
'http://movie.***.com/'
 
# 模拟Magic Browser向服务器发起请求
 
req = urllib.request.Request(url, headers={'User-Agent':"Magic  Browser"})
 
# 向网页发起请求
 
webpage = urllib.request.urlopen(req)
 
strw = webpage.read()
 
strw = strw.decode('utf-8')
 
# 打印utf-8解码后的内容
 
print(strw)

 
  • 步骤三:运行代码,返回页面结果。

  • 步骤四:解析网页文件。

    为完成页面的解析,要了解页面的结构,取出我们需要的数据。页面结构及网页解析说明如下:


从爬取的内容中,可以找到热门电影部分。找到某一部热门电影对应的网页数据源码结构部分。示例如下,显示的是热门电影名为“复仇者联盟4:终局之战(2019)”的源码,加粗加框且灰色背景部分的文字即是计划需要抽取的目标内容。

 

<dl id="topMovieSlide">

 

         <dd  id="top_218090" movieid="218090" year="2019" month="4"  day="24" pan="Dis-HotMovie1">

 

           <em>1</em>

 

           <p> <a href="http://movie.***.com/218090/"  target="_blank" title="复仇者联盟4:终局之战/Avengers:  Endgame(2019)">

 

           <img src="http://img5. .***..cn/mt/2019/03/29/095608.66203322_175X262X4.jpg"  width="175" alt="复仇者联盟4:终局之战/Avengers:  Endgame(2019)" /></a></p>

 

           <h3><a href="http://movie. .***..com/218090/"  target="_blank"title="复仇者联盟4:终局之战/Avengers:  Endgame(2019)">复仇者联盟4:终局之战(2019)</a></h3>

 

           <p><span></span> <span class="c_green  px14"></span>

 

           </p>

 

         </dd>

 

为获得最新的热门电影,我们需要从源码中解析出10部热门电影对应的位置,并对其中的标记语言进行分析和提取。撰写代码时,首先找到每一部热门电影对应的位置,然后按上述结构对该模块进行切分。代码如下:

 

import re
import os


# 找到热门电影对应源码的起始位置
 
tg_start=strw.find('<dl id="topMovieSlide">')
 
if tg_start==-1:
   
print("not find start tag")
    os._exit(
0)
 
# 字符串截取
 
tmp=strw[tg_start:-1]
 
#print(tg_start)
 #
找到热门电影的结束位置
 
tg_end=tmp.find('</div><div id="topTVRegion"')
 
#print(tg_end)
 
if tg_end==-1 :
   
print("not find start tag")
    os._exit(
0)
 
# 去除开头的<dl id="topMovieSlide">,并进行字符串截取
 
tmp=tmp[len('<dl  id="topMovieSlide">'):tg_end ]
 
#print(tmp)
 #
对字符串进行切片,生成列表
 
tar_ls=tmp.split("</dd>")
 
dict_film={}
 id =
0
 
# 循环遍历列表
 
for t0 in tar_ls:
    m = []
   
# 使用正则表达式进行字符串匹配
   
m= re.findall(r'>.*</a></h3>', t0)
   
if not m:
      
break
    
#添加到字典
   
dict_film[id] = m[0][1:-9]
    id = id +
1;

 
  • 步骤五:存储并输出爬取的关键数据


    以当前日期为文件名,保存这10部电影,代码说明在下面的视频中:

    代码如下:

 

import time

 

# 新建一个以本地时间命名的文本文件
 
file = open(time.strftime('%Y-%m-%d',time.localtime(time.time()))+'.txt','w+')
 
# 向文本文件中循环写入字典中的内容
 
for t in dict_film:
     file.write(
dict_film[t]+'\n')
 
# 关闭文件
 
file.close()

 
  • 步骤六:打开存储的文件,检查下载的数据。文件中显示的内容如图所示。



网络数据定时爬取

    为实时地查看最新的热门电影,可在系统中添加定时任务,定时执行代码从网站上获取最新的数据并存储。在windows系统中,可以使用【任务计划】来完成;而在Linux中,可使用crontab命令来设置定时任务。

    Windows系统中进入【控制面板】【管理工具】【任务计划程序】【创建任务】来添加新的定时任务。添加新任务时,需要建立新的触发器,进入【触发器】页签后,点击新建触发器。

    花一分钟简单说明一下,windows中计划任务功能: