Python數(shù)據(jù)分析之糗事百科第二彈

上回說到糗事百科段子的分析,今天對(duì)另外一張表,也就是用戶信息表的分析。

數(shù)據(jù)預(yù)處理

  • 導(dǎo)入數(shù)據(jù)
import pandas as pd
import pymongo
import jieba.analyse
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
client = pymongo.MongoClient('localhost',port = 27017)
qiushi = client['qiushi']
qiushi_info = qiushi['qiushi_info']
data1 = pd.DataFrame(list(qiushi_info.find()))

qiushi = client['qiushi']
user_info = qiushi['user_info']
data2 = pd.DataFrame(list(user_info.find()))

data1為段子信息,data2為用戶信息,二個(gè)表都有用戶url,我們可以將其merge。

  • merge
all_data = pd.merge(data1,data2,on='user_url')
all_data
  • 去重
    由于有些高玩用戶發(fā)過多個(gè)段子,所以這里需要去重,通過用戶id獲取唯一值。
data3 = all_data.drop_duplicates(['id'])

段子手星座分布

對(duì)于數(shù)字類的分析,上次已經(jīng)講過幾個(gè),我主要是對(duì)段子手的星座和地區(qū)感興趣,今天就分析下,大家也可以每個(gè)維度都分析下。

xingzuo = data3.groupby('constellation').size()

plt.figure(figsize=(10,6),dpi=80)
labels = list(xingzuo.index)
sizes = list(xingzuo)
plt.xlabel('星座')
plt.ylabel('用戶個(gè)數(shù)')
plt.title('糗事百科用戶星座分布圖')
plt.bar(range(len(sizes)),sizes,tick_label=labels,color='#99CC01',alpha=0.7)#alpha為透明度
plt.grid(color='#95a5a6',linestyle='--', linewidth=1,axis='y',alpha=0.6)
plt.legend(['用戶個(gè)數(shù)'])
for x,y in zip(range(len(sizes)),sizes):
    plt.text(x, y,y, ha='center', va= 'bottom')

除了不詳?shù)闹?,天秤座用戶最多,白羊座最少?/p>

天秤座常常追求和平和諧的感覺,他們善于交談,溝通能力極強(qiáng)是他們最大的優(yōu)點(diǎn)。但他們最大的缺點(diǎn),往往是猶豫不決。天秤座的人容易將自己的想法加諸到別人身上,天秤座的人要小心這點(diǎn)

白羊座就像小孩子一樣,直率、熱情、沖動(dòng),但也十分的自我為中心和孩子氣

段子手地區(qū)分布

如圖,數(shù)據(jù)是分省和市的,我們只提取省的數(shù)據(jù),這部分可以在爬蟲時(shí)進(jìn)行處理。


list_1=[]
for i in range(0,273):
    list_1.append(data3.iat[i,-6].split('· ')[0])
data3['province'] = list_1
data3
sheng = data3.groupby('province').size()
plt.figure(figsize=(20,6),dpi=80)
labels = list(sheng.index)
sizes = list(sheng)
plt.xlabel('省市')
plt.ylabel('用戶個(gè)數(shù)')
plt.title('糗事百科用戶省市分布圖')
plt.bar(range(len(sizes)),sizes,tick_label=labels,color='#99CC01',alpha=0.7)#alpha為透明度
plt.grid(color='#95a5a6',linestyle='--', linewidth=1,axis='y',alpha=0.6)
plt.legend(['用戶個(gè)數(shù)'])
for x,y in zip(range(len(sizes)),sizes):
    plt.text(x, y,y, ha='center', va= 'bottom')

大家看看,哪個(gè)省盛產(chǎn)段子手。我們也可以調(diào)用百度api,獲取省的經(jīng)緯度,然后用BDP畫出這樣的地圖。

總結(jié)

通過2個(gè)案例主要講解了python數(shù)據(jù)分析的基本流程。

  • 數(shù)據(jù)導(dǎo)入
  • 數(shù)據(jù)預(yù)處理
  • 數(shù)據(jù)整合
  • 數(shù)據(jù)可視化
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容