很久没在这里写文章了,主要是onenote用的太自在了,配合nas更舒服,只是最近联通宽带把公网ip改为内网ip,导致nas不能使用,实在是太坑.
还是得在这里记载一下.
最近爬了武汉二手房信息,做了一下可视化,爬取过程太简单不说了.初始数据如下
总价和建筑面积抓取过程没有做处理,只能后面再mongodb中处理了,没想到还有点麻烦 ,关键的几个地方:
#处理''150万''字符串
db.getCollection('wh').find().forEach(function(item){
db.getCollection('wh').update({"_id":item._id},{$set:{"total_price": item.total_price.split('万')[0] }})
})
# mongodb默认数字类型为64位浮点型,尝试过NumberDecimal,发现还是有误差.消除误差还是直接 放大100倍来得方便.
db.getCollection('wh').find().forEach(function(item){
item.建筑面积 = NumberInt(item.建筑面积*100);db.getCollection('wh').save(item)
})
数据处理好后就是可视化之前的准备工作了
首先看看产权性质和房屋类型.
what,经济适用房也能卖?!
别墅和公寓价格高,面积大,后面分析前会过滤这些数据
def getHouseWeight():
# # 房屋类型分布 # 别墅 普通,
# 随后的分析中去掉别墅
res = collection.aggregate([{'$group': {'_id': '$房屋类型','count':{'$sum':1}}}])
house,count =[],[]
for i in res:
print(i)
house.append(i['_id'])
count.append(i['count'])
return house,count
def getAreaWeight():
# 房源分布: 各区域房子套数
res = collection.aggregate([
{'$match': {'房屋类型': '普通住宅'}},
{'$group':{"_id":'$所在位置','count':{'$sum':1}}},
{'$sort':{'count':-1}}
])
region,count = [],[]
for i in res:
region.append(i['_id'])
count.append(i['count'])
return region,count
def getHouseType():
# # 房屋户型统计,去掉小于2的
res = collection.aggregate([
{'$match': {'房屋类型': '普通住宅'}},
{'$group':{"_id":'$房屋户型','count':{'$sum':1}}},
{'$match': {'count': {'$gt': 2}}}
])
housetype,count =[],[]
for i in res:
housetype.append(i['_id'])
count.append(i['count'])
return housetype,count
用jupyter notebook查看效果比较方便
可以发现,两室一厅和一室一厅户型相当低,这是刚需的户型,都是自己住的.而三室两厅和三室一厅户型占比80%左右,我只能说有钱人真多...你们可以多做点好事吗?
价格武昌独领风骚,青山,洪山,江汉,江岸不相伯仲,传统高地.可以看到江夏在远城区中一枝独秀,有机会可以细分一下
ok,主要是mongodb和pyecharts的使用
另,使用jupyter notebook时发现非常卡,解决方法如下,详见->引用文章
1. 使用命令jupyter notebook --generate-config 找文件 jupyter_notebook_config.py位置
2. 手动打开文件进行编辑,找到c.NotebookApp.notebook_dir 修改默认目录并去掉注释保存,最好修改目录到非C盘 c.NotebookApp.notebook_dir = 'E:\\Program Files\Python3_6_6\jupyter'(大约246行,注意磁盘名后面是双斜线)
3. jupyter notebook启动服务器,正常运行
来源:CSDN
作者:zbuhui
链接:https://blog.csdn.net/zbuhui/article/details/82835835