In [99]:
import pymongo
import charts
from datetime import timedelta,date
client = pymongo.MongoClient('localhost',27017)
db = client['ceshi']
info = db['ganji']
pi = db['pi']
In [4]:
ts = []
for i in info.find():
    ts.append(i['type_update'])
tps = list(set(ts))
print(tps)
['北京二手服装/鞋帽/箱包', '北京二手图书/音像/软件', '北京二手台式机/配件', '北京二手平板电脑', '北京二手家具', '北京二手文体/户外/乐器', '北京二手家电', '北京二手手机', '北京其他二手物品', '北京二手美容/保健', '北京二手母婴/儿童用品', '北京二手设备', '北京二手数码产品', '北京二手笔记本', '北京二手办公用品/设备']
In [5]:
cnt = {}
for i in info.find():
    tp = i['type_update']
    if tp in cnt:
        cnt[tp] = cnt[tp] + 1
    else:
        cnt[tp] = 1
print(cnt)
{'北京二手设备': 1639, '北京二手服装/鞋帽/箱包': 9990, '北京二手图书/音像/软件': 4221, '北京二手台式机/配件': 4855, '北京二手平板电脑': 1525, '北京二手家具': 4891, '北京二手文体/户外/乐器': 9510, '北京二手家电': 18863, '北京二手手机': 2822, '北京二手美容/保健': 2794, '北京二手母婴/儿童用品': 7819, '北京二手数码产品': 7666, '北京二手笔记本': 2651, '北京二手办公用品/设备': 6461, '北京其他二手物品': 1143}
In [13]:
series = []
for i in cnt:
    series.append({
        'name': i,
        'data': [ cnt[i] ],
        'type': 'column'
    })
charts.plot(series)
Opening new tab...
In [16]:
ctn = []
for i in tps:
    ctn.append({'name': i,'data': [cnt[i]]})
print(ctn)
[{'name': '北京二手服装/鞋帽/箱包', 'data': [9990]}, {'name': '北京二手图书/音像/软件', 'data': [4221]}, {'name': '北京二手台式机/配件', 'data': [4855]}, {'name': '北京二手平板电脑', 'data': [1525]}, {'name': '北京二手家具', 'data': [4891]}, {'name': '北京二手文体/户外/乐器', 'data': [9510]}, {'name': '北京二手家电', 'data': [18863]}, {'name': '北京二手手机', 'data': [2822]}, {'name': '北京其他二手物品', 'data': [1143]}, {'name': '北京二手美容/保健', 'data': [2794]}, {'name': '北京二手母婴/儿童用品', 'data': [7819]}, {'name': '北京二手设备', 'data': [1639]}, {'name': '北京二手数码产品', 'data': [7666]}, {'name': '北京二手笔记本', 'data': [2651]}, {'name': '北京二手办公用品/设备', 'data': [6461]}]
In [58]:
# print(info.find()[0]) #find model
typer = {}
arear = {}
tr = []
ar = []

for i in info.find({'pub_date' : '2015.12.27'}):
    pin = i['type_update']
    di  = i['area'][0]
    if pin in tr:
        typer[pin] = typer[pin] + 1
    else:
        typer[pin] = 1
        tr.append(pin)
    if di in ar:
        arear[di] = arear[di] + 1
    else:
        arear[di] = 1
        ar.append(di)
In [21]:
print(typer,arear)
{'北京二手服装/鞋帽/箱包': 198, '北京二手图书/音像/软件': 134, '北京二手台式机/配件': 145, '北京二手平板电脑': 34, '北京二手文体/户外/乐器': 99, '北京二手家电': 255, '北京二手手机': 68, '北京二手母婴/儿童用品': 143, '北京二手数码产品': 68, '北京二手笔记本': 53, '北京二手办公用品/设备': 97, '北京其他二手物品': 33} {'朝阳': 266, '燕郊': 7, '房山': 18, '崇文': 11, '北京周边': 9, '顺义': 25, '西城': 55, '门头沟': 7, '平谷': 3, '通州': 57, '石景山': 21, '怀柔': 7, '延庆': 7, '宣武': 27, '海淀': 156, '东城': 47, '不明': 307, '大兴': 73, '昌平': 85, '密云': 4, '丰台': 135}
In [24]:
def ptt(typer):
    s = []
    TTT = 0
    for sth in typer:
        TTT = TTT + typer[sth]
    for sth in typer:
        s.append({'name':sth,'y':typer[sth]/TTT})
    print(s)
In [59]:
ptt(arear)
[{'name': '朝阳', 'y': 0.2004521477015825}, {'name': '燕郊', 'y': 0.0052750565184626974}, {'name': '房山', 'y': 0.013564431047475508}, {'name': '崇文', 'y': 0.008289374529012811}, {'name': '北京周边', 'y': 0.006782215523737754}, {'name': '顺义', 'y': 0.018839487565938208}, {'name': '西城', 'y': 0.04144687264506405}, {'name': '门头沟', 'y': 0.0052750565184626974}, {'name': '平谷', 'y': 0.002260738507912585}, {'name': '通州', 'y': 0.04295403165033911}, {'name': '石景山', 'y': 0.015825169555388093}, {'name': '怀柔', 'y': 0.0052750565184626974}, {'name': '延庆', 'y': 0.0052750565184626974}, {'name': '宣武', 'y': 0.020346646571213264}, {'name': '海淀', 'y': 0.1175584024114544}, {'name': '东城', 'y': 0.03541823662396383}, {'name': '不明', 'y': 0.23134890730972119}, {'name': '大兴', 'y': 0.055011303692539565}, {'name': '昌平', 'y': 0.0640542577241899}, {'name': '密云', 'y': 0.003014318010550113}, {'name': '丰台', 'y': 0.10173323285606632}]
In [60]:
print(ar)
['朝阳', '怀柔', '海淀', '不明', '大兴', '丰台', '昌平', '西城', '东城', '通州', '门头沟', '顺义', '石景山', '宣武', '房山', '延庆', '密云', '北京周边', '燕郊', '崇文', '平谷']
In [93]:
iid = {}
ID = 0
for i in ar:
    iid[i] = ID
    ID = ID + 1
for i in ar:
    print('<div class="item" id="Slider',iid[i],'">',i,'</div>',sep = '')
<div class="item" id="Slider0">朝阳</div>
<div class="item" id="Slider1">怀柔</div>
<div class="item" id="Slider2">海淀</div>
<div class="item" id="Slider3">不明</div>
<div class="item" id="Slider4">大兴</div>
<div class="item" id="Slider5">丰台</div>
<div class="item" id="Slider6">昌平</div>
<div class="item" id="Slider7">西城</div>
<div class="item" id="Slider8">东城</div>
<div class="item" id="Slider9">通州</div>
<div class="item" id="Slider10">门头沟</div>
<div class="item" id="Slider11">顺义</div>
<div class="item" id="Slider12">石景山</div>
<div class="item" id="Slider13">宣武</div>
<div class="item" id="Slider14">房山</div>
<div class="item" id="Slider15">延庆</div>
<div class="item" id="Slider16">密云</div>
<div class="item" id="Slider17">北京周边</div>
<div class="item" id="Slider18">燕郊</div>
<div class="item" id="Slider19">崇文</div>
<div class="item" id="Slider20">平谷</div>
In [95]:
def pri(i,dat):
    print("<script>\n\t\t
	$('#Slider0').click(function () {\n\t\t\t$('#chart1').highcharts({\n\t\t\t\tcredits:{\n\t\t\t\t\tenabled:false\n\t\t\t\t},\n\t\t\t\ttitle: {\n\t\t\t\t\ttext: '通州二手交易'\n\t\t\t\t},\n\t\t\t\tyAxis: {\n\t\t\t\t\ttitle: {\n\t\t\t\t\t\ttext:  'TOP 3'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tseries: [{\n\t\t\t\t\tname: 'Jane',\n\t\t\t\t\tdata: [10, 7, 3]\n\t\t\t\t}]\n\t\t\t});\n\t\t});\n</script>
",sep='')
In [81]:
def get_inf(are):
    pipeline = [
        {'$match' : {'area_update' : are }},
        {'$group' : {'_id': {'$slice' : ['$cates',2,1]}, 'counts': {'$sum' : 1}}},
        {'$sort'  : {'counts' : -1}},
        {'$limit' : 3}
    ]
    dt = []
    for i in info.aggregate(pipeline):
        dt.append(dict(name=i['_id'][0],data=[i['counts']]))
    return dt
In [102]:
for kk in ar:
    pi.insert_one(dict(id='Slider' + str(iid[kk]),val=get_inf(kk)))
In [118]:
def pri(i,dat):
    print("<script>\n$('#Slider",iid[i],"').click(function () {\n\t$('#chart1').highcharts({\n\t\tchart: {\n\t\t\ttype: 'column'\n\t\t},\n\t\ttitle: {\n\t\t\ttext: '",i,"二手交易TOP3'\n\t\t},\n\t\tyAxis: {\n\t\t\ttitle: {\n\t\t\t\ttext:  'TOP 3'\n\t\t}\n\t\t},\n\t\tseries: ",dat,"\n\t});\n});\n</script>\n",sep='')
pri(ar[0],get_inf(ar[0]))
<script>
$('#Slider0').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '朝阳二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手家电', 'data': [4153]}, {'name': '北京二手服装/鞋帽/箱包', 'data': [2290]}, {'name': '北京二手文体/户外/乐器', 'data': [2222]}]
	});
});
</script>

In [119]:
for kid in ar:
    pri(kid,get_inf(kid))
<script>
$('#Slider0').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '朝阳二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手家电', 'data': [4153]}, {'name': '北京二手服装/鞋帽/箱包', 'data': [2290]}, {'name': '北京二手文体/户外/乐器', 'data': [2222]}]
	});
});
</script>

<script>
$('#Slider1').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '怀柔二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手文体/户外/乐器', 'data': [114]}, {'name': '北京二手家电', 'data': [79]}, {'name': '北京二手数码产品', 'data': [45]}]
	});
});
</script>

<script>
$('#Slider2').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '海淀二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手家电', 'data': [2452]}, {'name': '北京二手数码产品', 'data': [1690]}, {'name': '北京二手服装/鞋帽/箱包', 'data': [1206]}]
	});
});
</script>

<script>
$('#Slider3').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '不明二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手服装/鞋帽/箱包', 'data': [2415]}, {'name': '北京二手图书/音像/软件', 'data': [2185]}, {'name': '北京二手数码产品', 'data': [1664]}]
	});
});
</script>

<script>
$('#Slider4').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '大兴二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手家电', 'data': [1815]}, {'name': '北京二手文体/户外/乐器', 'data': [471]}, {'name': '北京二手家具', 'data': [455]}]
	});
});
</script>

<script>
$('#Slider5').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '丰台二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手家电', 'data': [2547]}, {'name': '北京二手文体/户外/乐器', 'data': [1010]}, {'name': '北京二手服装/鞋帽/箱包', 'data': [717]}]
	});
});
</script>

<script>
$('#Slider6').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '昌平二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手家电', 'data': [1247]}, {'name': '北京二手母婴/儿童用品', 'data': [546]}, {'name': '北京二手文体/户外/乐器', 'data': [523]}]
	});
});
</script>

<script>
$('#Slider7').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '西城二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手服装/鞋帽/箱包', 'data': [726]}, {'name': '北京二手家电', 'data': [619]}, {'name': '北京二手文体/户外/乐器', 'data': [417]}]
	});
});
</script>

<script>
$('#Slider8').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '东城二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手家电', 'data': [559]}, {'name': '北京二手文体/户外/乐器', 'data': [428]}, {'name': '北京二手服装/鞋帽/箱包', 'data': [421]}]
	});
});
</script>

<script>
$('#Slider9').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '通州二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手家电', 'data': [1235]}, {'name': '北京二手文体/户外/乐器', 'data': [711]}, {'name': '北京二手母婴/儿童用品', 'data': [502]}]
	});
});
</script>

<script>
$('#Slider10').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '门头沟二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手家电', 'data': [138]}, {'name': '北京二手数码产品', 'data': [61]}, {'name': '北京二手文体/户外/乐器', 'data': [54]}]
	});
});
</script>

<script>
$('#Slider11').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '顺义二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手家电', 'data': [416]}, {'name': '北京二手文体/户外/乐器', 'data': [388]}, {'name': '北京二手服装/鞋帽/箱包', 'data': [178]}]
	});
});
</script>

<script>
$('#Slider12').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '石景山二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手家电', 'data': [604]}, {'name': '北京二手服装/鞋帽/箱包', 'data': [203]}, {'name': '北京二手文体/户外/乐器', 'data': [202]}]
	});
});
</script>

<script>
$('#Slider13').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '宣武二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手家电', 'data': [421]}, {'name': '北京二手服装/鞋帽/箱包', 'data': [244]}, {'name': '北京二手文体/户外/乐器', 'data': [202]}]
	});
});
</script>

<script>
$('#Slider14').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '房山二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手家电', 'data': [489]}, {'name': '北京二手文体/户外/乐器', 'data': [203]}, {'name': '北京二手母婴/儿童用品', 'data': [173]}]
	});
});
</script>

<script>
$('#Slider15').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '延庆二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手数码产品', 'data': [41]}, {'name': '北京二手文体/户外/乐器', 'data': [34]}, {'name': '北京二手母婴/儿童用品', 'data': [22]}]
	});
});
</script>

<script>
$('#Slider16').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '密云二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手文体/户外/乐器', 'data': [115]}, {'name': '北京二手数码产品', 'data': [57]}, {'name': '北京二手家电', 'data': [51]}]
	});
});
</script>

<script>
$('#Slider17').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '北京周边二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手服装/鞋帽/箱包', 'data': [98]}, {'name': '北京二手文体/户外/乐器', 'data': [74]}, {'name': '北京二手设备', 'data': [66]}]
	});
});
</script>

<script>
$('#Slider18').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '燕郊二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手家电', 'data': [176]}, {'name': '北京二手文体/户外/乐器', 'data': [65]}, {'name': '北京二手数码产品', 'data': [54]}]
	});
});
</script>

<script>
$('#Slider19').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '崇文二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手家电', 'data': [205]}, {'name': '北京二手文体/户外/乐器', 'data': [153]}, {'name': '北京二手服装/鞋帽/箱包', 'data': [150]}]
	});
});
</script>

<script>
$('#Slider20').click(function () {
	$('#chart1').highcharts({
		chart: {
			type: 'column'
		},
		title: {
			text: '平谷二手交易TOP3'
		},
		yAxis: {
			title: {
				text:  'TOP 3'
		}
		},
		series: [{'name': '北京二手文体/户外/乐器', 'data': [76]}, {'name': '北京二手数码产品', 'data': [41]}, {'name': '北京二手母婴/儿童用品', 'data': [27]}]
	});
});
</script>

In [ ]: