python实战计划的第九个项目:用jupyter的简单的数据图表,将MongoDB中的数据展示出来。
在week2_3实战中,被爬取的商品的信息存放在info_sheet表单中,这次我用jupyter连接,并打印出前300条,如下:
在查看数据库的信息之后,我决定将不同地区的发帖量以图表的形式展现。
其中重点在于如何把目标信息,以highcharts 绘图的格式整理出来,因为商品地区的第一个都是武汉,我便取它的第二个,有些第二个为空的则让它为空。
1.统计一共有多少个地区
cates_list=[]
for i in info_sheet.find():
cates_list.append(i['area'][1])
cates_index=list(set(cates_list))
print(cates_index,len(cates_index))
#['', '新洲', '汉阳', '越秀', '汉南', '市南', '白云', '硚口', '其他', '沌口开发区', '东西湖', '江夏', '洪山', '蔡甸', '武昌', '二七', '青山', '黄陂', '江岸', '江汉'] 20
包括一个空的项,一共有20个。
2.用data_gen()函数,统计每个项都有多少次数,并将信息整理成highcharts 绘图的格式
def data_gen(types):
for cate,times in zip(cates_index,post_time):
data={
'name':cate,
'data':[times],
'type':types
}
yield data
for i in data_gen('column'):
print(i)
‘’‘
{'type': 'column', 'name': '', 'data': [1791]}
{'type': 'column', 'name': '新洲', 'data': [295]}
{'type': 'column', 'name': '汉阳', 'data': [2299]}
{'type': 'column', 'name': '越秀', 'data': [4]}
{'type': 'column', 'name': '汉南', 'data': [117]}
{'type': 'column', 'name': '市南', 'data': [2]}
{'type': 'column', 'name': '白云', 'data': [2]}
{'type': 'column', 'name': '硚口', 'data': [1997]}
{'type': 'column', 'name': '其他', 'data': [3]}
{'type': 'column', 'name': '沌口开发区', 'data': [804]}
{'type': 'column', 'name': '东西湖', 'data': [1309]}
{'type': 'column', 'name': '江夏', 'data': [1562]}
{'type': 'column', 'name': '洪山', 'data': [6336]}
{'type': 'column', 'name': '蔡甸', 'data': [331]}
{'type': 'column', 'name': '武昌', 'data': [8091]}
{'type': 'column', 'name': '二七', 'data': [4]}
{'type': 'column', 'name': '青山', 'data': [1278]}
{'type': 'column', 'name': '黄陂', 'data': [727]}
{'type': 'column', 'name': '江岸', 'data': [4074]}
{'type': 'column', 'name': '江汉', 'data': [3653]}
’‘’
3.highcharts 绘图的代码
series=[data for data in data_gen('column')]
charts.plot(series,show='inline',options=dict(title=dict(text='发帖量')))
图表:
最高的是武昌,第二是洪山,第三是江汉