數據分析實戰.基礎篇
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 的使用。