知乎人均985?Python爬50W數(shù)據(jù),BI做出可視化后,我有了答案
一次完整的python數(shù)據(jù)分析流程是怎么樣的?
使用python從網(wǎng)站抓取數(shù)據(jù),并將這些數(shù)據(jù)保存到SQLite數(shù)據(jù)庫(kù)中,然后對(duì)數(shù)據(jù)進(jìn)行清洗,最后對(duì)數(shù)據(jù)進(jìn)行數(shù)據(jù)可視化分析。
可是熟悉的人應(yīng)該知道,python爬取簡(jiǎn)單,但是分析起來(lái)是很困難的,SQL語(yǔ)句、Pandas和Matplotlib這些十分繁瑣,一般人也不會(huì)。
于是我想到了用一種更簡(jiǎn)單的方式進(jìn)行數(shù)據(jù)分析,那就是python爬取+BI分析。什么是BI就不用我多做介紹了吧,python強(qiáng)大的數(shù)據(jù)獲取能力,配合敏捷BI簡(jiǎn)單快捷的數(shù)據(jù)可視化操作,分析效果那肯定是杠杠的!
那這次我們就來(lái)看看“人均985,年薪百萬(wàn)”的知乎背后,到底有什么秘密?話(huà)不多說(shuō),開(kāi)爬!
一、我們想要哪些數(shù)據(jù)?
知乎用戶(hù)的學(xué)校和公司肯定是首當(dāng)其沖的,我想看看到底這些人是編的還是真的哈哈哈。
其次就是性別,職業(yè),地理位置,活躍程度等,統(tǒng)統(tǒng)扒個(gè)遍。
二、爬取的過(guò)程
知乎現(xiàn)在改用https請(qǐng)求了,數(shù)據(jù)加密,但是問(wèn)題不大,重要的是網(wǎng)頁(yè)數(shù)據(jù)改動(dòng)了,而且在請(qǐng)求時(shí)后臺(tái)會(huì)對(duì)爬蟲(chóng)做一些判斷,因此在每次請(qǐng)求是都需要加上request header,盡可能接近瀏覽器請(qǐng)求的樣子。
得到列表頁(yè)的源碼后,你可以從其中獲取到每個(gè)問(wèn)題的鏈接:

每頁(yè)有20個(gè)問(wèn)題,所以你可以獲得到20個(gè)問(wèn)題的鏈接,之后就是對(duì)每個(gè)問(wèn)題的處理:

能實(shí)現(xiàn)到這一步,剩下的就是循環(huán)、判斷和一些細(xì)節(jié)了。
最終一部分的代碼如下:
- import requests
- import pandas as pd
- import time
- headers={
- 'authorization':'',#此處填寫(xiě)你自己的身份驗(yàn)證信息
- 'User-Agent':''#此處填寫(xiě)你自己瀏覽器的User-Agent
- }
- user_data = []
- def get_user_data(page):
- for i in range(page):#翻頁(yè)
- 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數(shù)據(jù)添加進(jìn)user_data
- print('正在爬取第%s頁(yè)' % str(i+1))
- time.sleep(1) #設(shè)置爬取網(wǎng)頁(yè)的時(shí)間間隔為1秒
- if __name__ == '__main__':
- get_user_data(10)
- df = pd.DataFrame.from_dict(user_data)#以字典保存數(shù)據(jù)
- df.to_csv('zhihu.csv',encoding='utf_8_sig')#保存到用戶(hù)名為zhihu的csv文件中,encoding='utf_8_sig'參數(shù)是為了解決中文亂碼的問(wèn)題
- print(df)
更多源代碼見(jiàn)文末!
在Python代碼中我并沒(méi)有采取線(xiàn)程池,而是采用了開(kāi)起10個(gè)main()方法去抓取,即10個(gè)進(jìn)程,歷時(shí)4個(gè)小時(shí),爬取了57w+數(shù)據(jù)。

三、用BI進(jìn)行數(shù)據(jù)可視化分析

現(xiàn)在我們已經(jīng)進(jìn)行到最后一步用BI開(kāi)始做數(shù)據(jù)可視化了,揭秘知乎的時(shí)刻就要到來(lái)了。
市面上的BI工具有很多種,國(guó)外的Tableau和國(guó)內(nèi)的FineBI都是BI領(lǐng)域的領(lǐng)先者,但早就聽(tīng)說(shuō)Tableau適合有基礎(chǔ)的數(shù)據(jù)分析師,對(duì)于小白很不友好。再加上我前天偶然間看到了IDC的報(bào)告,發(fā)現(xiàn)帆軟的市場(chǎng)占有率是第一,為了避免回爐重做,我選擇了FineBI這款敏捷工具,事實(shí)證明,我的選擇是對(duì)的。

首先在官網(wǎng)下載FineBI,雖說(shuō)是企業(yè)級(jí)的數(shù)據(jù)分析平臺(tái),但是它對(duì)于個(gè)人是永久免費(fèi)的,文末給大家準(zhǔn)備了下載鏈接~
然后直接通過(guò)FineBI提供的數(shù)據(jù)配置端的功能,添加SQL數(shù)據(jù)集(或者直接添加表也行),查看和驗(yàn)證剛剛爬取并且入庫(kù)的數(shù)據(jù)是否已經(jīng)真正成功入庫(kù)到MySQL中了。

忘了說(shuō),F(xiàn)ineBI的一大特點(diǎn)就是自助分析。什么叫自助分析?就是我自己拖拖拽拽數(shù)據(jù),就可以有和Matplotlib一樣的效果,你也許還會(huì)想到Excel,但一般幾萬(wàn)行的數(shù)據(jù)以上,excel基本就無(wú)能為力,很卡。但是FineBI處理大數(shù)據(jù)依然可以行云流水,效率高幾十倍上百倍都有可能。
同時(shí)VBA有個(gè)致命弱點(diǎn)是,它只能基于excel內(nèi)部進(jìn)行自動(dòng)化,其他方面就沒(méi)辦法了。
我在寫(xiě)這篇文章之前,分析過(guò)房?jī)r(jià)和銷(xiāo)售額,特地把它做成了動(dòng)圖供大家參考:

四、知乎的數(shù)據(jù)可視化
FineBI的儀表板可自行拖拽調(diào)整組件位置,配上多種類(lèi)型的柱狀圖、餅圖、雷達(dá)圖,數(shù)據(jù)可視化就是這么輕而易舉,只有你想不到,沒(méi)有它做不到。

1、哪個(gè)城市的知乎用戶(hù)最多?

從云詞圖中我們可以看出,城市越繁華,知乎的用戶(hù)人數(shù)就越多(文字越大,比重越大)。所以也可以看見(jiàn)北上廣深四個(gè)一線(xiàn)城市處于最中心,新一線(xiàn)城市緊隨其后,換句話(huà)說(shuō):知乎的人大部分在一線(xiàn)城市或者新一線(xiàn)城市,果然是見(jiàn)多識(shí)廣!
再來(lái)看看具體的排名吧:

杭州處在第三名了,果然互聯(lián)網(wǎng)的發(fā)源之地之一不是吹的,阿里網(wǎng)易起到了很大的作用,為什么這么說(shuō)?等你看到職業(yè)就明白了。
2、他們都是哪些學(xué)校的?

你看看,你看看,這學(xué)歷真的很高,誰(shuí)說(shuō)人均985都是吹的?
不過(guò)也不奇怪,知乎主打的就是高知識(shí)份子的聚集地,而且學(xué)生比起上班族,有更多的時(shí)間玩手機(jī)。
既然分析到學(xué)校了,我們肯定要來(lái)看看各個(gè)高校上玩知乎的男女比例:

不用我說(shuō)你們就可以猜到,藍(lán)色代表的是男生,女孩子要么在逛街,要么就在學(xué)習(xí),低頭玩手機(jī)的肯定是男孩子哈哈哈(雖然我也是男的)。
我們?cè)賮?lái)看看各地區(qū)有哪些高校是知乎重度用戶(hù),顏色越深代表該學(xué)校的知乎用戶(hù)越多:

別說(shuō)了,知乎人均985實(shí)錘了,我流下了羨慕的淚水,我想請(qǐng)問(wèn)同學(xué),是怎么做到玩和學(xué)習(xí)同時(shí)兼顧的?你如果教教我,我高考距離清華的錄取分?jǐn)?shù)線(xiàn)可能就更近一點(diǎn)了....
3、知乎的職業(yè)比例
除去學(xué)生之后,我們發(fā)現(xiàn)知乎的人都是....

產(chǎn)品經(jīng)理最多,這是最近幾年最火爆的職業(yè)吧,不過(guò)話(huà)說(shuō)你的文檔寫(xiě)好了?需求畫(huà)好了?是不是知乎的頁(yè)面交互你不太滿(mǎn)意?不然還不去干活?
可以看到,除了一些互聯(lián)網(wǎng)公司的常見(jiàn)職位外,教師和律師用戶(hù)在知乎中也占據(jù)不小的比重。
我們?cè)儆靡粡垷崃D來(lái)觀察知乎主流職業(yè)(前四名)在各個(gè)地區(qū)的分布情況,顏色越深,代表該職業(yè)在該地區(qū)的人數(shù)越多:

總結(jié)
我分析了這么多,不是想告訴你們知乎的用戶(hù)到底怎么怎么樣,而是想說(shuō)如果想做數(shù)據(jù)分析,F(xiàn)ineBI確實(shí)是一款很好用的工具,對(duì)個(gè)人和對(duì)企業(yè)都是這樣。
當(dāng)然了,上面才只是FineBI的冰山一角,更多的東西還得你們自己去探索。