一次完整的python數據分析流程是怎麼樣的?
使用python從網站抓取數據,並將這些數據保存到SQLite資料庫中,然後對數據進行清洗,最後對數據進行數據可視化分析。
可是熟悉的人應該知道,python爬取簡單,但是分析起來是很困難的,SQL語句、Pandas和Matplotlib這些十分繁瑣,一般人也不會。
於是我想到了用一種更簡單的方式進行數據分析,那就是python爬取+BI分析。什麼是BI就不用我多做介紹了吧,python強大的數據獲取能力,配合敏捷BI簡單快捷的數據可視化操作,分析效果那肯定是槓槓的!
那這次我們就來看看「人均985,年薪百萬」的知乎背後,到底有什麼秘密?話不多說,開爬!
一、我們想要哪些數據?
知乎用戶的學校和公司肯定是首當其衝的,我想看看到底這些人是編的還是真的哈哈哈。
其次就是性別,職業,地理位置,活躍程度等,統統扒個遍。
二、爬取的過程
知乎現在改用https請求了,數據加密,但是問題不大,重要的是網頁數據改動了,而且在請求時後臺會對爬蟲做一些判斷,因此在每次請求是都需要加上request header,儘可能接近瀏覽器請求的樣子。
得到列表頁的源碼後,你可以從其中獲取到每個問題的連結:
每頁有20個問題,所以你可以獲得到20個問題的連結,之後就是對每個問題的處理:
能實現到這一步,剩下的就是循環、判斷和一些細節了。
最終一部分的代碼如下:
import requests
import pandas as pd
import time
headers={
'authorization':'',#此處填寫你自己的身份驗證信息
'User-Agent':''#此處填寫你自己瀏覽器的User-Agent
}
user_data = []
def get_user_data(page):
for i in range(page):#翻頁
url = 'https://www.zhihu.com/api/v4/members/excited-vczh/followees?include=data%5B*%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics&offset={}&limit=20'.format(i*20)
response = requests.get(url, headers=headers).json()['data']
user_data.extend(response) #把response數據添加進user_data
print('正在爬取第%s頁' % str(i+1))
time.sleep(1) #設置爬取網頁的時間間隔為1秒
if __name__ == '__main__':
get_user_data(10)
df = pd.DataFrame.from_dict(user_data)#以字典保存數據
df.to_csv('zhihu.csv',encoding='utf_8_sig')#保存到用戶名為zhihu的csv文件中,encoding='utf_8_sig'參數是為了解決中文亂碼的問題
print(df)
更多原始碼見文末!
在Python代碼中我並沒有採取線程池,而是採用了開起10個main()方法去抓取,即10個進程,歷時4個小時,爬取了57w+數據。
三、用BI進行數據可視化分析
現在我們已經進行到最後一步用BI開始做數據可視化了,揭秘知乎的時刻就要到來了。
市面上的BI工具有很多種,國外的Tableau和國內的FineBI都是BI領域的領先者,但早就聽說Tableau適合有基礎的數據分析師,對於小白很不友好。再加上我前天偶然間看到了IDC的報告,發現帆軟的市場佔有率是第一,為了避免回爐重做,我選擇了FineBI這款敏捷工具,事實證明,我的選擇是對的。
首先在官網下載FineBI,雖說是企業級的數據分析平臺,但是它對於個人是永久免費的,文末給大家準備了下載連結~
然後直接通過FineBI提供的數據配置端的功能,添加SQL數據集(或者直接添加表也行),查看和驗證剛剛爬取並且入庫的數據是否已經真正成功入庫到MySQL中了。
忘了說,FineBI的一大特點就是自助分析。什麼叫自助分析?就是我自己拖拖拽拽數據,就可以有和Matplotlib一樣的效果,你也許還會想到Excel,但一般幾萬行的數據以上,excel基本就無能為力,很卡。但是FineBI處理大數據依然可以行雲流水,效率高几十倍上百倍都有可能。
同時VBA有個致命弱點是,它只能基於excel內部進行自動化,其他方面就沒辦法了。
我在寫這篇文章之前,分析過房價和銷售額,特地把它做成了動圖供大家參考:
四、知乎的數據可視化
FineBI的儀錶板可自行拖拽調整組件位置,配上多種類型的柱狀圖、餅圖、雷達圖,數據可視化就是這麼輕而易舉,只有你想不到,沒有它做不到。
1、哪個城市的知乎用戶最多?
從雲詞圖中我們可以看出,城市越繁華,知乎的用戶人數就越多(文字越大,比重越大)。所以也可以看見北上廣深四個一線城市處於最中心,新一線城市緊隨其後,換句話說:知乎的人大部分在一線城市或者新一線城市,果然是見多識廣!
再來看看具體的排名吧:
杭州處在第三名了,果然網際網路的發源之地之一不是吹的,阿里網易起到了很大的作用,為什麼這麼說?等你看到職業就明白了。
2、他們都是哪些學校的?
你看看,你看看,這學歷真的很高,誰說人均985都是吹的?
不過也不奇怪,知乎主打的就是高知識份子的聚集地,而且學生比起上班族,有更多的時間玩手機。
既然分析到學校了,我們肯定要來看看各個高校上玩知乎的男女比例:
不用我說你們就可以猜到,藍色代表的是男生,女孩子要麼在逛街,要麼就在學習,低頭玩手機的肯定是男孩子哈哈哈(雖然我也是男的)。
我們再來看看各地區有哪些高校是知乎重度用戶,顏色越深代表該學校的知乎用戶越多:
別說了,知乎人均985實錘了,我流下了羨慕的淚水,我想請問同學,是怎麼做到玩和學習同時兼顧的?你如果教教我,我高考距離清華的錄取分數線可能就更近一點了....
3、知乎的職業比例
除去學生之後,我們發現知乎的人都是....
產品經理最多,這是最近幾年最火爆的職業吧,不過話說你的文檔寫好了?需求畫好了?是不是知乎的頁面交互你不太滿意?不然還不去幹活?
可以看到,除了一些網際網路公司的常見職位外,教師和律師用戶在知乎中也佔據不小的比重。
我們再用一張熱力圖來觀察知乎主流職業(前四名)在各個地區的分布情況,顏色越深,代表該職業在該地區的人數越多:
總結
我分析了這麼多,不是想告訴你們知乎的用戶到底怎麼怎麼樣,而是想說如果想做數據分析,FineBI確實是一款很好用的工具,對個人和對企業都是這樣。
當然了,上面才只是FineBI的冰山一角,更多的東西還得你們自己去探索。