分析數(shù)據(jù):aggregate更多用法

兩個(gè)任務(wù):
1.找出每個(gè)地區(qū)銷(xiāo)售量top3座泳,并顯示出來(lái)
2.找出每種大類(lèi)的成色跟價(jià)格的折線圖

第一個(gè):每個(gè)地區(qū)的top3

成果:


地區(qū)tpo3

代碼:

from pymongo import MongoClient
import charts
client = MongoClient()
ceshi = client['ceshi']
item_info = ceshi['item_info']


# 給定aera返回帖子數(shù)量list的生成器
def post_in_aera(aera):
    pipeline = [
        {'$match': {'$and': [{'time': {'$in': ['2016-08-01','2016-08-14']}},{'place': aera}]}},
        {'$group': {'_id': '$cate', 'counts': {'$sum':1}}},
        # 降序排列
        {'$sort' : {'counts': -1}},
        # 用來(lái)顯示top3
        {'$limit': 3}
    ]
    for i in item_info.aggregate(pipeline):
        data = {
            'name': i['_id'][0],
            'data': [i['counts']],
            'type': 'column'
        }
        yield data


# 變更aera,就可以查看特定地區(qū)的top3數(shù)量
aera = '海淀'
series = [i for i in post_in_aera(aera)]
print(series)
charts.plot(series,show="inline",options=dict(title=dict(text=aera)))

小結(jié)

這里沒(méi)啥太大的困難碳蛋,唯一的就是覺(jué)得有缺陷:作為外地人,我怎么知道北京都有哪些區(qū)?
最穩(wěn)妥的作法就是,寫(xiě)個(gè)管道边翼,篩選出來(lái)所有的區(qū)域,然后循環(huán)放進(jìn)chart函數(shù)圖里面鸣剪,生成多樣的圖组底。這樣才是程序員應(yīng)該思考的問(wèn)題。但是估計(jì)是charts不支持生成多種圖筐骇,所以沒(méi)有成功

第二個(gè):找出每種大類(lèi)的成色跟價(jià)格的折線圖

結(jié)果:


成色跟平均價(jià)格的關(guān)系統(tǒng)計(jì)

代碼:

from pymongo import MongoClient
import charts
client = MongoClient()
ceshi = client['ceshi']
item_info = ceshi['item_info']


# 數(shù)據(jù)生成器债鸡,用以生成成色的平均值,只產(chǎn)生了數(shù)值
def data_gen(date1,date2,cates):
    pipeline = [
    {'$match':{'$and':[{'pub_date':{'$gte':date1,'$lte':date2}},
                       {'cates':{'$all':cates}},
                       {'look':{'$nin':['-']}}
                      ]}},
    {'$group':{'_id':'$look','avg_price':{'$avg':'$price'}}},
    {'$sort':{'avg_price':1}}
]
    for i in item_info.aggregate(pipeline):
        yield i['avg_price']


# 成色生成器铛纬,生成成色厌均,跟上個(gè)生成器一樣的,只是取出來(lái)的數(shù)據(jù)不一樣
實(shí)話說(shuō)這樣寫(xiě)很掏糞告唆,但是自己只會(huì)這么寫(xiě)
def look_gen(date1,date2,cates):
    pipe = [
        {'$match':{'$and':[{'pub_date':{'$gte': date1,'$lte': date2}},
                       {'cates': {'$all': cates}},
                       {'look': {'$nin':['-']}}
                      ]}},
        {'$group':{'_id':'$look','avg_price':{'$avg':'$price'}}},
        {'$sort':{'avg_price':1}}
    ]
    for i in item_info.aggregate(pipe):
        yield i['_id']


# 生成charts
date1 = '2015.12.24'
date2 = '2016.01.10'
cates = ['北京二手?jǐn)?shù)碼產(chǎn)品']
data = [i for i in data_gen(date1, date2, cates)]
options = {
    'title': {'text': '新舊-價(jià)格趨勢(shì)圖'},
    # x軸這里生成的下標(biāo)棺弊,原先只是手寫(xiě)的,覺(jué)得比較掏糞就想著這么搞
    'xAxis'   : {'categories': [i for i in look_gen(date1, date2, cates)]},
    'yAxis'   : {'title': {'text': '價(jià)格'}},
    
}

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

新技能GET:

  • all
    {'cates': {'$all': ['apple']}},只要cates中包含‘a(chǎn)pple’就滿足篩選條件擒悬,這個(gè)cates項(xiàng)就會(huì)被篩選出來(lái)

  • nin
    {'look': {'$nin':['-']}}含義是模她,not in ,不包含‘-’的look項(xiàng)被篩選出來(lái)

  • group
    再次理解這個(gè)group懂牧,為什么此次的調(diào)查叫成色的平均值呢侈净?我這樣理解:9成新肯定有一批商品,只要把價(jià)格匯總起來(lái)求平均值就得到了9成新的均值(個(gè)人認(rèn)為不科學(xué),比方二手家電有9成新的電飯鍋和9成新的空調(diào)畜侦,一平均就失衡了元扔,這個(gè)先不管),又引入了平均值的求法

  • avg
    {'$group':{'_id':'$look','avg_price':{'$avg':'$price'}}},
    篩選look項(xiàng)目中price的平均值夏伊,最后賦給‘a(chǎn)vg_price’這個(gè)key摇展。這個(gè)真好用,因?yàn)槟爿斎氲目赡苁亲址缬牵谷蛔约寒a(chǎn)生數(shù)值運(yùn)算了

  • 輸出csv格式
    mongoexport -d ceshi -c item_details -o Users/##.csv
    -d后面是數(shù)據(jù)庫(kù)的名稱(chēng)咏连,-c后面是collection的名稱(chēng),-o后面是輸出的路徑及其格式鲁森,當(dāng)然csv可以換為json.
    csv是什么呢祟滴?
    答:逗號(hào)分隔值(Comma-Separated Values,CSV歌溉,有時(shí)也稱(chēng)為字符分隔值垄懂,因?yàn)榉指糇址部梢圆皇嵌禾?hào)),其文件以純文本形式存儲(chǔ)表格數(shù)據(jù)(數(shù)字和文本)
    好吧痛垛,win不支持在jupyter中使用終端草慧,所以就算了

小結(jié)

也就是group用的6不6的狀況了

總結(jié)

整個(gè)week3都是套路,只要熟悉對(duì)數(shù)據(jù)庫(kù)的操作基本沒(méi)有什么大問(wèn)題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末匙头,一起剝皮案震驚了整個(gè)濱河市漫谷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蹂析,老刑警劉巖舔示,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異电抚,居然都是意外死亡惕稻,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)蝙叛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)俺祠,“玉大人,你說(shuō)我怎么就攤上這事甥温《突停” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵姻蚓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我匣沼,道長(zhǎng)狰挡,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮加叁,結(jié)果婚禮上倦沧,老公的妹妹穿的比我還像新娘。我一直安慰自己它匕,他們只是感情好展融,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著豫柬,像睡著了一般告希。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上烧给,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天燕偶,我揣著相機(jī)與錄音,去河邊找鬼础嫡。 笑死指么,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的榴鼎。 我是一名探鬼主播伯诬,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼巫财!你這毒婦竟也來(lái)了盗似?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤翁涤,失蹤者是張志新(化名)和其女友劉穎桥言,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體葵礼,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡号阿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鸳粉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扔涧。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖届谈,靈堂內(nèi)的尸體忽然破棺而出枯夜,到底是詐尸還是另有隱情,我是刑警寧澤艰山,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布湖雹,位于F島的核電站,受9級(jí)特大地震影響曙搬,放射性物質(zhì)發(fā)生泄漏摔吏。R本人自食惡果不足惜鸽嫂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望征讲。 院中可真熱鬧据某,春花似錦、人聲如沸诗箍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)滤祖。三九已至筷狼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間氨距,已是汗流浹背桑逝。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俏让,地道東北人楞遏。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像首昔,于是被迫代替她去往敵國(guó)和親寡喝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容