数据分析2 - 基础篇
數(shù)據(jù)分析實(shí)戰(zhàn).基礎(chǔ)篇
06 | 學(xué)數(shù)據(jù)分析要掌握哪些基本概念?
商業(yè)智能 BI、數(shù)據(jù)倉(cāng)庫(kù) DW、數(shù)據(jù)挖掘 DM 三者之間的關(guān)系
開(kāi)頭中的百貨商店利用數(shù)據(jù)預(yù)測(cè)用戶購(gòu)物行為屬于商業(yè)智能,他們積累的顧客的消費(fèi)行為習(xí)慣會(huì)存儲(chǔ)在數(shù)據(jù)倉(cāng)庫(kù)中,通過(guò)對(duì)個(gè)體進(jìn)行消費(fèi)行為分析總結(jié)出來(lái)的規(guī)律屬于數(shù)據(jù)挖掘。
KDD
Knowledge Discovery in Databas
數(shù)據(jù)挖掘的流程
07 | 用戶畫(huà)像:標(biāo)簽化就是數(shù)據(jù)的抽象能力
用戶畫(huà)像的準(zhǔn)則
最后,當(dāng)你有了用戶畫(huà)像,可以為企業(yè)帶來(lái)什么業(yè)務(wù)價(jià)值呢?
我們可以從用戶生命周期的三個(gè)階段來(lái)劃分業(yè)務(wù)價(jià)值,包括:獲客、粘客和留客。
所以這個(gè)標(biāo)簽化的流程,就是通過(guò)數(shù)據(jù)層的“事實(shí)標(biāo)簽”,在算法層進(jìn)行計(jì)算,打上“模型標(biāo)簽”的分類結(jié)果,最后指導(dǎo)業(yè)務(wù)層,得出“預(yù)測(cè)標(biāo)簽”。
美團(tuán)外賣的用戶畫(huà)像該如何設(shè)計(jì)?
用戶的唯一標(biāo)識(shí):以用戶的注冊(cè)手機(jī)號(hào)為標(biāo)準(zhǔn)
- 用戶標(biāo)簽:性別、年齡、家鄉(xiāng)、居住地、收貨地址、婚姻、寶寶信息、通過(guò)何種渠道進(jìn)行的注冊(cè)。
- 消費(fèi)標(biāo)簽:餐飲口味、消費(fèi)均價(jià)、團(tuán)購(gòu)等級(jí)、預(yù)定使用等級(jí)、排隊(duì)使用等級(jí)、外賣等級(jí)。
- 行為標(biāo)簽:點(diǎn)外賣時(shí)間段、使用頻次、平均點(diǎn)餐用時(shí)、訪問(wèn)路徑。
- 內(nèi)容分析:基于用戶平時(shí)瀏覽的內(nèi)容進(jìn)行統(tǒng)計(jì),包括餐飲口味、優(yōu)惠敏感度等。
羊肉串店的用戶畫(huà)像
唯一ID確認(rèn):可以根據(jù)付款人、付款賬號(hào)等信息確認(rèn)
- 用戶標(biāo)簽:性別、年齡、家鄉(xiāng)
- 消費(fèi)標(biāo)簽:餐飲口味、消費(fèi)均價(jià)、預(yù)定使用等級(jí)、排隊(duì)使用等級(jí)
- 行為標(biāo)簽:光顧時(shí)間、光顧頻率、光顧的地理位置(連鎖店)、平均點(diǎn)餐時(shí)間、對(duì)優(yōu)惠券的敏感程度
- 內(nèi)容標(biāo)簽:菜品種類、菜品數(shù)量、餐飲口味
朋友圈畫(huà)像
- 標(biāo)簽有:家人、朋友、同學(xué)、同事、陌生人
需要統(tǒng)計(jì)的種類有:
- 用戶標(biāo)簽:性別、年齡、地區(qū)、通過(guò)何種方式添加
- 消費(fèi)標(biāo)簽:點(diǎn)贊內(nèi)容、參與的活動(dòng)等
- 行為標(biāo)簽:點(diǎn)贊頻率,點(diǎn)贊時(shí)間、聊天時(shí)間、聊天頻率、聊天時(shí)長(zhǎng)
- 內(nèi)容標(biāo)簽:點(diǎn)贊內(nèi)容,聊天內(nèi)容、發(fā)布朋友圈內(nèi)容、點(diǎn)贊的文章,關(guān)注的公眾號(hào)
08 | 數(shù)據(jù)采集:如何自動(dòng)化采集數(shù)據(jù)?
數(shù)據(jù)源
如何使用爬蟲(chóng)做抓取
在 Python 爬蟲(chóng)中,基本上會(huì)經(jīng)歷三個(gè)過(guò)程。
- 使用 Requests 爬取內(nèi)容。我們可以使用 Requests 庫(kù)來(lái)抓取網(wǎng)頁(yè)信息。Requests 庫(kù)可以說(shuō)是 Python 爬蟲(chóng)的利器,也就是 Python 的 HTTP 庫(kù),通過(guò)這個(gè)庫(kù)爬取網(wǎng)頁(yè)中的數(shù)據(jù),非常方便,可以幫我們節(jié)約大量的時(shí)間。
- 使用 XPath 解析內(nèi)容。XPath 是 XML Path 的縮寫(xiě),也就是 XML 路徑語(yǔ)言。它是一種用來(lái)確定 XML 文檔中某部分位置的語(yǔ)言,在開(kāi)發(fā)中經(jīng)常用來(lái)當(dāng)作小型查詢語(yǔ)言。XPath 可以通過(guò)元素和屬性進(jìn)行位置索引。
- 使用 Pandas 保存數(shù)據(jù)。Pandas 是讓數(shù)據(jù)分析工作變得更加簡(jiǎn)單的高級(jí)數(shù)據(jù)結(jié)構(gòu),我們可以用 Pandas 保存爬取的數(shù)據(jù)。最后通過(guò) Pandas 再寫(xiě)入到 XLS 或者 MySQL 等數(shù)據(jù)庫(kù)中。
Requests、XPath、Pandas 是 Python 的三個(gè)利器。當(dāng)然做 Python 爬蟲(chóng)還有很多利器,比如 Selenium,PhantomJS,或者用 Puppteteer 這種無(wú)頭模式。
三款常用的抓取工具
- 火車采集器
- 八爪魚(yú)
- 集搜客
埋點(diǎn)是什么
- 埋點(diǎn)就是在有需要的位置采集相應(yīng)的信息,進(jìn)行上報(bào)。
- 埋點(diǎn)就是在你需要統(tǒng)計(jì)數(shù)據(jù)的地方植入統(tǒng)計(jì)代碼,當(dāng)然植入代碼可以自己寫(xiě),也可以使用第三方統(tǒng)計(jì)工具。
- 推薦你使用第三方的工具,比如友盟、Google Analysis、Talkingdata 等
09丨數(shù)據(jù)采集:如何用八爪魚(yú)采集微博上的“D&G”評(píng)論
10丨Python爬蟲(chóng):如何自動(dòng)化下載王祖賢海報(bào)?
爬蟲(chóng)的流程
爬蟲(chóng)實(shí)際上是用瀏覽器訪問(wèn)的方式模擬了訪問(wèn)網(wǎng)站的過(guò)程,整個(gè)過(guò)程包括三個(gè)階段:打開(kāi)網(wǎng)頁(yè)、提取數(shù)據(jù)和保存數(shù)據(jù)。
- 在“打開(kāi)網(wǎng)頁(yè)”這一步驟中,可以使用 Requests 訪問(wèn)頁(yè)面,得到服務(wù)器返回給我們的數(shù)據(jù),這里包括 HTML 頁(yè)面以及 JSON 數(shù)據(jù)。
- 在“提取數(shù)據(jù)”這一步驟中,主要用到了兩個(gè)工具。針對(duì) HTML 頁(yè)面,可以使用 XPath 進(jìn)行元素定位,提取數(shù)據(jù);針對(duì) JSON 數(shù)據(jù),可以使用 JSON 進(jìn)行解析。
- 在最后一步“保存數(shù)據(jù)”中,我們可以使用 Pandas 保存數(shù)據(jù),最后導(dǎo)出 CSV 文件。
XPath 定位
舉例:
- xpath(‘node’) 選取了 node 節(jié)點(diǎn)的所有子節(jié)點(diǎn);
- xpath(’/div’) 從根節(jié)點(diǎn)上選取 div 節(jié)點(diǎn);
- xpath(’//div’) 選取所有的 div 節(jié)點(diǎn);
- xpath(’./div’) 選取當(dāng)前節(jié)點(diǎn)下的 div 節(jié)點(diǎn);
- xpath(’…’) 回到上一個(gè)節(jié)點(diǎn);
- xpath(’//@id’) 選取所有的 id 屬性;
- xpath(’//book[@id]’) 選取所有擁有名為 id 的屬性的 book 元素;
- xpath(’//book[@id=“abc”]’) 選取所有 book 元素,且這些 book 元素?fù)碛?id= "abc"的屬性;
- xpath(’//book/title | //book/price’)選取 book 元素的所有 title 和 price 元素。
使用 XPath 定位,你會(huì)用到 Python 的一個(gè)解析庫(kù) lxml。
//比如我們想要定位到 HTML 中的所有列表項(xiàng)目 from lxml import etree html = etree.HTML(html) result = html.xpath('//li')JSON 對(duì)象
// 這是一段將 JSON 格式轉(zhuǎn)換成 Python 對(duì)象的代碼import json jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; input = json.loads(jsonData) print input如何使用 JSON 數(shù)據(jù)自動(dòng)下載王祖賢的海報(bào)
注意:如果爬取的頁(yè)面是動(dòng)態(tài)頁(yè)面,就需要關(guān)注 XHR 數(shù)據(jù)。因?yàn)閯?dòng)態(tài)頁(yè)面的原理就是通過(guò)原生的 XHR 數(shù)據(jù)對(duì)象發(fā)出 HTTP 請(qǐng)求,得到服務(wù)器返回的數(shù)據(jù)后,再進(jìn)行處理。XHR 會(huì)用于在后臺(tái)與服務(wù)器交換數(shù)據(jù)。
# 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('圖片無(wú)法下載')''' for 循環(huán) 請(qǐng)求全部的 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 # 得到返回結(jié)果response = json.loads(html,encoding='utf-8') # 將 JSON 格式轉(zhuǎn)換成 Python 對(duì)象for image in response['images']:print(image['src']) # 查看當(dāng)前下載的圖片網(wǎng)址download(image['src'], image['id']) # 下載一張圖片但有時(shí)候當(dāng)我們直接用 Requests 獲取 HTML 的時(shí)候,發(fā)現(xiàn)想要的 XPath 并不存在。這是因?yàn)?HTML 還沒(méi)有加載完,因此你需要一個(gè)工具,來(lái)進(jìn)行網(wǎng)頁(yè)加載的模擬,直到完成加載后再給你完整的 HTML。
在 Python 中,這個(gè)工具就是 Selenium 庫(kù),使用方法如下:
from selenium import webdriver driver = webdriver.Chrome() driver.get(request_url)Selenium 是 Web 應(yīng)用的測(cè)試工具,可以直接運(yùn)行在瀏覽器中,它的原理是模擬用戶在進(jìn)行操作,支持當(dāng)前多種主流的瀏覽器。獲取訪問(wèn)頁(yè)面的完整 HTML。
小結(jié)
問(wèn)題
問(wèn):如果是需要用戶登陸后才能爬取的數(shù)據(jù)該怎么用python來(lái)實(shí)現(xiàn)呢?
答:你可以使用python+selenium的方式完成賬戶的自動(dòng)登錄,因?yàn)閟elenium是個(gè)自動(dòng)化測(cè)試的框架,使用selenium 的webdriver就可以模擬瀏覽器的行為。找到輸入用戶名密碼的地方,輸入相應(yīng)的值,然后模擬點(diǎn)擊即可完成登錄(沒(méi)有驗(yàn)證碼的情況下)
另外你也可以使用cookie來(lái)登錄網(wǎng)站,方法是你登錄網(wǎng)站時(shí),先保存網(wǎng)站的cookie,然后用下次訪問(wèn)的時(shí)候,加載之前保存的cookie,放到request headers中,這樣就不需要再登錄網(wǎng)站了
11 | 數(shù)據(jù)科學(xué)家80%時(shí)間都花費(fèi)在了這些清洗任務(wù)上?
小結(jié)
12 | 數(shù)據(jù)集成:這些大號(hào)一共20億粉絲?
數(shù)據(jù)集成的兩種架構(gòu):ETL & ELT
ETL 工具
Kettle:Kettle 中文名稱叫水壺,該項(xiàng)目的目標(biāo)是將各種數(shù)據(jù)放到一個(gè)壺里,然后以一種指定的格式流出。
Kettle 工具的使用:如何將文本文件的內(nèi)容轉(zhuǎn)化到 MySQL 數(shù)據(jù)庫(kù)中
小結(jié)
13 | 數(shù)據(jù)變換:考試成績(jī)要求正態(tài)分布合理么?
14丨數(shù)據(jù)可視化:掌握數(shù)據(jù)領(lǐng)域的萬(wàn)金油技能
商業(yè)智能分析
- Tableau
- PowerBI
- FineBI
可視化大屏類
- DataV
- FineReport
Web 渲染技術(shù)
Canvas、SVG 和 WebGL。
Canvas 和 SVG 是 HTML5 中主要的 2D 圖形技術(shù),WebGL 是 3D 框架。
- Canvas 適用于位圖
- SVG 的中文是可縮放矢量圖形,它是使用 XML 格式來(lái)定義圖形的
- WebGL 是一種 3D 繪圖協(xié)議
可視化組件
Echarts、D3、Three.js 和 AntV。
編程語(yǔ)言
在 Python 里包括了眾多可視化庫(kù),比如 Matplotlib、Seaborn、Bokeh、Plotly、Pyecharts、Mapbox 和 Geoplotlib。其中使用頻率最高,最需要掌握的就是 Matplotlib 和 Seaborn。
小結(jié)
15丨一次學(xué)會(huì)Python數(shù)據(jù)可視化的10種技能
16丨數(shù)據(jù)分析基礎(chǔ)篇答疑
Scrapy
Scrapy 是一個(gè) Python 的爬蟲(chóng)框架,它依賴的工具比較多,所以在 pip install 的時(shí)候,會(huì)安裝多個(gè)工具包。scrapy 本身包括了爬取、處理、存儲(chǔ)等工具。在 scrapy 中,有一些組件是提供給你的,需要你針對(duì)具體任務(wù)進(jìn)行編寫(xiě)。比如在 item.py 對(duì)抓取的內(nèi)容進(jìn)行定義,在 spider.py 中編寫(xiě)爬蟲(chóng),在 pipeline.py 中對(duì)抓取的內(nèi)容進(jìn)行存儲(chǔ),可以保存為 csv 等格式。這里不具體講解 scrapy 的使用。
總結(jié)
以上是生活随笔為你收集整理的数据分析2 - 基础篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 前端学习(2591):刷新页面vuex消
- 下一篇: 工作199:获取接口token