数据分析实战.基础篇
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 的使用。