python數(shù)據(jù)分析:某時間與城區(qū)內(nèi)發(fā)帖數(shù)量 top3 類目

統(tǒng)計趕集網(wǎng)某段時間內(nèi),北京各個城區(qū)發(fā)帖數(shù)量的 top3 類目

效果是這樣的:

圖標展示

我的代碼:

from pymongo import MongoClient
import charts
client=MongoClient('localhost',27017)
ganjiDB=client['ganjiDB']
detail_info=ganjiDB['detail_info']
def get_gen(date1,date2,area,limit):
    pipeline1 = [
    {'$match':{'$and':[{'pub_date':{'$gte':date1,'$lte':date2}},{'area':{'$all':area}}]}},
    {'$group':{'_id':{'$slice':['$cates',2,1]},'counts':{'$sum':1}}},調(diào)用已有類目cates注意前面添加$,sum前不要丟$
    {'$limit':limit},
    {'$sort':{'counts':-1}}#倒序排列,注意前面冒號不要丟
]
    for i in detail_info.aggregate(pipeline1):
        data={
            'name':i['_id'][0],
            'data':[i['counts']],#注意是列表結(jié)構(gòu),注意字典調(diào)用key時不要忘記引號i['counts']''
            'type':'column'
        }
        yield data
series=[data for data in get_gen('2015.12.24','2015.12.27',['海淀'],3)]
options = {
    'chart'   : {'zoomType':'xy'},
    'title'   : {'text': '某段時間內(nèi),北京各個城區(qū)發(fā)帖數(shù)量的 top3 類目'},
    'subtitle': {'text': '數(shù)據(jù)圖表'},
    'yAxis'   : {'title': {'text': '數(shù)量'}}
    }

charts.plot(series,options=options,show='inline')

總結(jié):

  • MongoDB中聚合(aggregate)主要用于處理數(shù)據(jù)(諸如統(tǒng)計平均值,求和等),并返回計算后的數(shù)據(jù)結(jié)果。有點類似sql語句中的 count(*);
  • $match:用于過濾數(shù)據(jù),只輸出符合條件的文檔。$match使用MongoDB的標準查詢操作。
  • $group:將集合中的文檔分組,可用于統(tǒng)計結(jié)果。
  • $sort:將輸入文檔排序后輸出。
  • $limit:用來限制MongoDB聚合管道返回的文檔數(shù)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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