week3_实战作业

#coding=utf-8
import re
from datetime import date
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
ganji = client['ganji_market']
goods = ganji['sampledata']
def gen_data_by_district(start,end,district,limit):
    '''指定城区,获取某时间段内二手物品数量'''

    pipeline = [
        {'$match': {'pub_date':{'$gte':start,'$lte':end},'area': {'$all': [district]}}},
        {'$limit' : limit},
        {'$group':
             {'_id': {'district': {'$slice': ['$area', 1]}, 'cate': {'$slice': ['$cates', 2, 1]}},
            'count': {'$sum': 1}}},
        {'$sort': {'count':-1}},
        {'$project' : {'cate' : '$_id.cate','count' : 1,'_id' : 0}}
    ]

    for data in goods.aggregate(pipeline):
        fmt_data = {
            'name' : data['cate'][0],
            'data' : [data['count']],
            'type' : 'column'
        }
        yield fmt_data
        
district = '海淀'
start = '2015.01.01'
end = '2015.12.30'
datas = gen_data_by_district(start,end,district,20000)
series = [item for item in datas]
    

options = {
    'chart'   : {'zoomType':'xy'},
    'title'   : {'text': district + '区二手物品发帖量'},
    'subtitle': {'text': start + '至' + end},
    'xAxis'   : {'title': {'text': '二手物品类目'}},
    'yAxis'   : {'title': {'text': '发帖量'}}
    }

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











Adjust chart settings

.json




def gen_data_by_look(start,end,cate,limit):
    '''指定类目,获取某时间段内所有城区二手物品平均数'''

#     pipeline = [
#         {'$match': {'pub_date':{'$gte':start,'$lte':end},'cates': {'$all': [cate]}, 'look' : {'$nin' : ['-']}}},
#         {'$limit' : limit},
#         {'$group':{'_id': '$look','avg': {'$avg': '$price'}}},
#         {'$sort': {'_id':1}},
#     ]
    pipeline = [
        {'$match' : {'pub_date':{'$gte':start,'$lte':end},'cates' : {'$all' : [cate]},'look' : {'$nin' : ['-']}}},
        {'$project' : {'price' : 1,'look' : 1, '_id' : 0}},
        {'$limit': limit},
        {'$group' : {'_id' : '$look','avg' : {'$avg' : '$price'}}},
        {'$sort': {'_id':1}},
    ]
    
    categories = []
    data = []
    for item in goods.aggregate(pipeline):
        categories.append(item['_id'])
        data.append(round(item['avg'],2))

    return(categories,data)
cate = '北京二手手机'
start = '2015.01.01'
end = '2015.12.30'
datas = gen_data_by_look(start, end, cate, 20000)
series = {
    'name' : cate,
    'data' : datas[1]
}
print(datas[1])
print(datas[0])

options = {
    'chart'   : {'zoomType':'xy'},
    'title'   : {'text': cate + '平均价格走势'},
    'subtitle': {'text': start + '至' + end},
    'xAxis'   : {'title': {'text': '二手物品类目'},
                'categories' :datas[0]},
                 
    'yAxis'   : {'title': {'text': '发帖量'}}
    }

charts.plot(series,options=options,show='inline')
[175.0, 497.86, 2802.46, 1657.75, 975.26, 2294.28, 450.0]
['7成新及以下', '8成新', '95成新', '99成新', '9成新', '全新', '报废机/尸体']











Adjust chart settings

.json





你可能感兴趣的:(week3_实战作业)