charts jupyter notebook 画简单的柱状图
数据库是mongdb
数据是58同城上发的转手记录
一 为了保证数据安全,对需要进行处理的数据进行拷贝。
> db.createCollection('test')
{ "ok" : }
> show collections
base_url
detail_info
detail_url
test
> db.detail_info.copyTo('test')
WARNING: db.eval is deprecated
二 对数据库中的数据进行处理
不要想着将数据拿出来,处理完后,在一一对应放到数据库中!
原本数据库中的地址存储的格式是:北京-昌平,北京-通州,需要拿到具体的某个区。
在jupyter notebook中进行操作。
这用到了update方法和$set 操作符。update方法的调用者是 col ,表。
for i in col.find():
zone_l = (i['zone'].split('-'))
if len(zone_l)>:
new_zone = zone_l[]
else:
new_zone = '不明'
col.update({'_id':i['_id']},{'$set':{'zone':new_zone}})
三 从数据库中读到 地址,对地址进行整理。
这里用到了set集合,和列表的count方法,内置函数zip()。很关键
zones = []
for i in col.find():
zone.append(i['zone'])
single_zone = list(set(zones))
num = [zones.count(i) for i in single_zone ]
构建charts要求格式的数据。
def foo():
l = []
for zone,n in zip(single_zone,num):
Data={
'name':zone,
'data':[n],
'type':'column',
}
l.append(Data)
return l
PS.
这里实际上可以用生成器,节省内存。
def foo():
for zone,n in zip(single_zone,num):
Data={
'name':zone,
'data':[n],
'type':'column',
}
yield Data
l = [ i for i in foo() ]
四 调用charts.plot方法。
依照固定格式传参
l = foo()
charts.plot(l,show='inline',options=dict(title=dict(text='Beijing')))
最终现实结果:

示例二: 使用aggregate(),管道函数比find()快很多。
import charts
import pymongo
client = pymongo.MongoClient('localhost',)
db = client['ganji']
col = db['test'] for i in col.find().limit():
print(i)
输出:
{'_id': ObjectId('5698f524a98063dbe9e91ca8'), 'pub_date': '2016-01-12', 'look': '-', 'area': '朝阳', 'title': '【图】95成新小冰柜转让 - 朝阳高碑店二手家电 - 北京58同城', 'url': 'http://bj.58.com/jiadian/24541664530488x.shtml', 'cates': ['北京58同城', '北京二手市场', '北京二手家电', '北京二手冰柜'], 'price': '450 元'}
{'_id': ObjectId('5698f525a98063dbe4e91ca8'), 'pub_date': '2016-01-14', 'look': '-', 'area': '朝阳', 'title': '【图】洗衣机,小冰箱,小冰柜,冷饮机 - 朝阳定福庄二手家电 - 北京58同城', 'url': 'http://bj.58.com/jiadian/24349380911041x.shtml', 'cates': ['北京58同城', '北京二手市场', '北京二手家电', '北京二手洗衣机'], 'price': '1500 元'}
aggregate()
pipeline = [
{'$match':{'area':'昌平'}},
{'$group':{'_id':{'$slice':['$cates',,]},'count':{'$sum':}}},
{'$sort':{'count':-}},
{'$limit':},
]
def get_one_area(area):
pipeline = [
{'$match':{'area':area}},
{'$group':{'_id':{'$slice':['$cates',,]},'count':{'$sum':}}},
{'$sort':{'count':-}},
{'$limit':},
]
for i in col.aggregate(pipeline):
Data = {
'name':i['_id'],
'data':[i['count']],
'type':'column'
}
yield Data
l = [i for i in get_one_area('昌平')]
import charts
options = {
'title':{
'text':'昌平'
},
'subtitle':{
'text':'前三名'
},
'yAxis':{
'title':{
'text':'数量'
}
}
}
charts.plot(l,show='inline',options=options)
输出:

charts jupyter notebook 画简单的柱状图的更多相关文章
- 27个Jupyter Notebook使用技巧及快捷键(翻译版)
Jupyter Notebook Jupyter Notebook 以前被称为IPython notebook.Jupyter Notebook是一款能集各种分析包括代码.图片.注释.公式及自己画的图 ...
- 如何在Python中快速画图——使用Jupyter notebook的魔法函数(magic function)matplotlib inline
如何在Python中快速画图--使用Jupyter notebook的魔法函数(magic function)matplotlib inline 先展示一段相关的代码: #we test the ac ...
- jupyter notebook + pyspark 环境搭建
安装并启动jupyter 安装 Anaconda 后, 再安装 jupyter pip install jupyter 设置环境 ipython --ipython-dir= # override t ...
- pyspark 中启动 jupyter notebook
还是打算选择python学习spark编程 因为java写函数式比较复杂,scala学习曲线比较陡峭,而且sbt和eclipse和maven的结合实在是让人崩溃,经常找不到主类去执行 python以前 ...
- Jupyter notebook入门
Jupyter notebook入门 [TOC] Jupyter notebook 是一种 Web 应用,能让用户将说明文本.数学方程.代码和可视化内容全部组合到一个易于共享的文档中. Jupyter ...
- python︱Anaconda安装、简介(安装报错问题解决、Jupyter Notebook)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 安装完anaconda,就相当于安装了Pyth ...
- jupyter notebook的架构
最近项目需要改写jupyter notebook的内核,由于内功不够,英语过差,读文档真的是心痛,然后各种搜索找到了一篇不错的讲解. 转自:http://blog.just4fun.site/jupy ...
- Jupyter Notebook中的快捷键
1.快捷键 Jupyter Notebook 有两种键盘输入模式.编辑模式,允许你往单元中键入代码或文本:这时的单元框线是绿色的.命令模式,键盘输入运行程序命令:这时的单元框线是灰色. 命令模式 (按 ...
- Jupyter NoteBook功能介绍
一.Jupyter Notebook 介绍 文学编程 在介绍 Jupyter Notebook 之前,让我们先来看一个概念:文学编程 ( Literate programming ),这是由 Dona ...
随机推荐
- 使用JDK自带的jmap和jhat监控处于运行状态的Java进程
对于处于运行状态中的Java进程,JDK自带了很多工具,允许Java开发人员监控运行进程中的各种状态,比如该进程内部创建了多少个对象实例,消耗了多少内存,等等. 本文基于JDK1.8而写成. 我下面写 ...
- PHP高端课程
关于目后佐道IT教育 http://www.cnblogs.com/itpua/p/7710917.html 目后佐道IT教育的师资团队 http://www.cnblogs.com/itpua/p/ ...
- 访问修饰符(C# 参考)
第一篇 就抄写了一下下MSDN上面的东西练练手吧!!! 访问修饰符是一些关键字,用于指定声明的成员或类型的可访问性. 本节介绍四个访问修饰符: public protected ...
- git快速入门(MAC系统,github,ssh key)
如果使用过svn的话,git大致可以认为是多了本地库的svn.git先本地提交commit到本地库,然后再push到远程服务器的库.git是分布式的代码管理工具,基于SSH协议.ssh的作用就是为了不 ...
- BestCoder Round#15 1002-Instruction
http://acm.hdu.edu.cn/showproblem.php?pid=5083 官方题解——> 1002 Instruction 先考虑编码,首先找到operation对应的编码, ...
- C++值传递、引用传递和指针传递
#include<iostream> using namespace std; //值传递 void change1(int n){ cout<<"值传递--函数操作 ...
- C03 程序逻辑
程序逻辑 运算符 顺序结构 选择结构 循环结构 运算符 赋值运算符:= 比较运算符:>.<.==. >=.<=.!= 逻辑运算符:&&.||.! 顺序结构 在C ...
- BXS入门赛部分writeup
pwn1 盲打(笑) 前言:没有听鱼哥的话,事先没有装好环境,于是开始没做出来,然后全程在装pwntools,经过一番努力,失败了0.0 最终在网上搜了一段python socket连接脚本,终于可 ...
- PAT (Basic Level) Practise (中文)-1033. 旧键盘打字(20)
PAT (Basic Level) Practise (中文)-1033. 旧键盘打字(20) http://www.patest.cn/contests/pat-b-practise/1033 旧 ...
- xheditor的实例程序—类似word的编辑器
编辑器工具栏:类似word的编辑器 1.1.下载,兼容性 xhEditor官方网站地址为:http://xheditor.com/,打开右上角的免费下载 | 参数向导链接,即可找到最新版本的下载地址. ...