数据分析实战.基础篇


06 | 学数据分析要掌握哪些基本概念?

商业智能 BI、数据仓库 DW、数据挖掘 DM 三者之间的关系

开头中的百货商店利用数据预测用户购物行为属于商业智能,他们积累的顾客的消费行为习惯会存储在数据仓库中,通过对个体进行消费行为分析总结出来的规律属于数据挖掘。

KDD

Knowledge Discovery in Databas

数据挖掘的流程


07 | 用户画像:标签化就是数据的抽象能力

用户画像的准则

最后,当你有了用户画像,可以为企业带来什么业务价值呢?

我们可以从用户生命周期的三个阶段来划分业务价值,包括:获客、粘客和留客。

所以这个标签化的流程,就是通过数据层的“事实标签”,在算法层进行计算,打上“模型标签”的分类结果,最后指导业务层,得出“预测标签”。

美团外卖的用户画像该如何设计?

用户的唯一标识:以用户的注册手机号为标准

  • 用户标签:性别、年龄、家乡、居住地、收货地址、婚姻、宝宝信息、通过何种渠道进行的注册。
  • 消费标签:餐饮口味、消费均价、团购等级、预定使用等级、排队使用等级、外卖等级。
  • 行为标签:点外卖时间段、使用频次、平均点餐用时、访问路径。
  • 内容分析:基于用户平时浏览的内容进行统计,包括餐饮口味、优惠敏感度等。

羊肉串店的用户画像

唯一ID确认:可以根据付款人、付款账号等信息确认

  • 用户标签:性别、年龄、家乡
  • 消费标签:餐饮口味、消费均价、预定使用等级、排队使用等级
  • 行为标签:光顾时间、光顾频率、光顾的地理位置(连锁店)、平均点餐时间、对优惠券的敏感程度
  • 内容标签:菜品种类、菜品数量、餐饮口味

朋友圈画像

  • 标签有:家人、朋友、同学、同事、陌生人

需要统计的种类有:

  • 用户标签:性别、年龄、地区、通过何种方式添加
  • 消费标签:点赞内容、参与的活动等
  • 行为标签:点赞频率,点赞时间、聊天时间、聊天频率、聊天时长
  • 内容标签:点赞内容,聊天内容、发布朋友圈内容、点赞的文章,关注的公众号

08 | 数据采集:如何自动化采集数据?

数据源

如何使用爬虫做抓取

在 Python 爬虫中,基本上会经历三个过程。

  • 使用 Requests 爬取内容。我们可以使用 Requests 库来抓取网页信息。Requests 库可以说是 Python 爬虫的利器,也就是 Python 的 HTTP 库,通过这个库爬取网页中的数据,非常方便,可以帮我们节约大量的时间。
  • 使用 XPath 解析内容。XPath 是 XML Path 的缩写,也就是 XML 路径语言。它是一种用来确定 XML 文档中某部分位置的语言,在开发中经常用来当作小型查询语言。XPath 可以通过元素和属性进行位置索引。
  • 使用 Pandas 保存数据。Pandas 是让数据分析工作变得更加简单的高级数据结构,我们可以用 Pandas 保存爬取的数据。最后通过 Pandas 再写入到 XLS 或者 MySQL 等数据库中。

Requests、XPath、Pandas 是 Python 的三个利器。当然做 Python 爬虫还有很多利器,比如 Selenium,PhantomJS,或者用 Puppteteer 这种无头模式。

三款常用的抓取工具

  • 火车采集器
  • 八爪鱼
  • 集搜客

埋点是什么

  • 埋点就是在有需要的位置采集相应的信息,进行上报。
  • 埋点就是在你需要统计数据的地方植入统计代码,当然植入代码可以自己写,也可以使用第三方统计工具。
  • 推荐你使用第三方的工具,比如友盟、Google Analysis、Talkingdata 等

09丨数据采集:如何用八爪鱼采集微博上的“D&G”评论


10丨Python爬虫:如何自动化下载王祖贤海报?

爬虫的流程

爬虫实际上是用浏览器访问的方式模拟了访问网站的过程,整个过程包括三个阶段:打开网页、提取数据和保存数据。

  • 在“打开网页”这一步骤中,可以使用 Requests 访问页面,得到服务器返回给我们的数据,这里包括 HTML 页面以及 JSON 数据。
  • 在“提取数据”这一步骤中,主要用到了两个工具。针对 HTML 页面,可以使用 XPath 进行元素定位,提取数据;针对 JSON 数据,可以使用 JSON 进行解析
  • 在最后一步“保存数据”中,我们可以使用 Pandas 保存数据,最后导出 CSV 文件

XPath 定位

举例:

  • xpath(‘node’) 选取了 node 节点的所有子节点;
  • xpath(’/div’) 从根节点上选取 div 节点;
  • xpath(’//div’) 选取所有的 div 节点;
  • xpath(’./div’) 选取当前节点下的 div 节点;
  • xpath(’…’) 回到上一个节点;
  • xpath(’//@id’) 选取所有的 id 属性;
  • xpath(’//book[@id]’) 选取所有拥有名为 id 的属性的 book 元素;
  • xpath(’//book[@id=“abc”]’) 选取所有 book 元素,且这些 book 元素拥有 id= "abc"的属性;
  • xpath(’//book/title | //book/price’)选取 book 元素的所有 title 和 price 元素。

使用 XPath 定位,你会用到 Python 的一个解析库 lxml。

//比如我们想要定位到 HTML 中的所有列表项目
from lxml import etree
html = etree.HTML(html)
result = html.xpath('//li')

JSON 对象

// 这是一段将 JSON 格式转换成 Python 对象的代码

import json
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
input = json.loads(jsonData)
print input

如何使用 JSON 数据自动下载王祖贤的海报

注意:如果爬取的页面是动态页面,就需要关注 XHR 数据。因为动态页面的原理就是通过原生的 XHR 数据对象发出 HTTP 请求,得到服务器返回的数据后,再进行处理。XHR 会用于在后台与服务器交换数据。

# coding:utf-8
import requests
import json
query = '王祖贤'
''' 下载图片 '''
def download(src, id):
	dir = './' + str(id) + '.jpg'
	try:
		pic = requests.get(src, timeout=10)
		fp = open(dir, 'wb')
		fp.write(pic.content)
		fp.close()
	except requests.exceptions.ConnectionError:
		print('图片无法下载')
            
''' for 循环 请求全部的 url '''
for i in range(0, 22471, 20):
	url = 'https://www.douban.com/j/search_photo?q='+query+'&limit=20&start='+str(i)
	html = requests.get(url).text    # 得到返回结果
	response = json.loads(html,encoding='utf-8') # 将 JSON 格式转换成 Python 对象
	for image in response['images']:
		print(image['src']) # 查看当前下载的图片网址
		download(image['src'], image['id']) # 下载一张图片

但有时候当我们直接用 Requests 获取 HTML 的时候,发现想要的 XPath 并不存在。这是因为 HTML 还没有加载完,因此你需要一个工具,来进行网页加载的模拟,直到完成加载后再给你完整的 HTML。

在 Python 中,这个工具就是 Selenium 库,使用方法如下:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get(request_url)

Selenium 是 Web 应用的测试工具,可以直接运行在浏览器中,它的原理是模拟用户在进行操作,支持当前多种主流的浏览器。获取访问页面的完整 HTML

小结

问题

问:如果是需要用户登陆后才能爬取的数据该怎么用python来实现呢?

答:你可以使用python+selenium的方式完成账户的自动登录,因为selenium是个自动化测试的框架,使用selenium 的webdriver就可以模拟浏览器的行为。找到输入用户名密码的地方,输入相应的值,然后模拟点击即可完成登录(没有验证码的情况下)

另外你也可以使用cookie来登录网站,方法是你登录网站时,先保存网站的cookie,然后用下次访问的时候,加载之前保存的cookie,放到request headers中,这样就不需要再登录网站了


11 | 数据科学家80%时间都花费在了这些清洗任务上?

小结


12 | 数据集成:这些大号一共20亿粉丝?

数据集成的两种架构:ETL & ELT

ETL 工具

Kettle:Kettle 中文名称叫水壶,该项目的目标是将各种数据放到一个壶里,然后以一种指定的格式流出。

Kettle 工具的使用:如何将文本文件的内容转化到 MySQL 数据库中

小结


13 | 数据变换:考试成绩要求正态分布合理么?


14丨数据可视化:掌握数据领域的万金油技能

商业智能分析

  • Tableau
  • PowerBI
  • FineBI

可视化大屏类

  • DataV
  • FineReport

Web 渲染技术

Canvas、SVG 和 WebGL。

Canvas 和 SVG 是 HTML5 中主要的 2D 图形技术,WebGL 是 3D 框架。

  • Canvas 适用于位图
  • SVG 的中文是可缩放矢量图形,它是使用 XML 格式来定义图形的
  • WebGL 是一种 3D 绘图协议

可视化组件

Echarts、D3、Three.js 和 AntV。

编程语言

在 Python 里包括了众多可视化库,比如 Matplotlib、Seaborn、Bokeh、Plotly、Pyecharts、Mapbox 和 Geoplotlib。其中使用频率最高,最需要掌握的就是 Matplotlib 和 Seaborn。

小结


15丨一次学会Python数据可视化的10种技能


16丨数据分析基础篇答疑

Scrapy

Scrapy 是一个 Python 的爬虫框架,它依赖的工具比较多,所以在 pip install 的时候,会安装多个工具包。scrapy 本身包括了爬取、处理、存储等工具。在 scrapy 中,有一些组件是提供给你的,需要你针对具体任务进行编写。比如item.py 对抓取的内容进行定义,在 spider.py 中编写爬虫,在 pipeline.py 中对抓取的内容进行存储,可以保存为 csv 等格式。这里不具体讲解 scrapy 的使用。