大师网-带你快速走向大师之路 解决你在学习过程中的疑惑,带你快速进入大师之门。节省时间,提升效率

通过词云看看小区名字那些事

前些天发现家附近的一个新楼盘有名字了,



那是个什么字我都不认识。。。

现在的小区是命名越来越随性了,记忆中那些XX新村,XX花园,现在感觉都不会再出现了,正好最近爬链家的时候把深圳所有小区都存了下来,就来看看这些年在小区名字上留下了什么印记。

主要工具

  • wordcloud 词云
  • jieba 结巴分词

先放代码

import jieba  
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import pymongo 
from scipy.misc import imread

client = pymongo.MongoClient('localhost',27017)
db = client['bjsz']

list1 = []
for i in db['sz'].find():
    list1.append(i['title'])
text = ','.join(list1)
cut_text = ' '.join(jieba.cut(text))  #结巴分词,然后空格连接
color_mask = imread('background.jpg')   #设置图云背景
cloud = WordCloud(
    background_color='white',      # 设置背景颜色,默认颜色则为黑色
    font_path='C:\Windows\Fonts\msyh.ttf', # 中文图云必须指定字体,不然全是框框
    max_words=1000,  # 词云显示的最大词数
    font_step=2,    # 字号的步调
    mask=color_mask,  #设置背景图片
    random_state= 15, # 随机配色方案
    min_font_size=5,  #最小字号
    max_font_size=100, #最大字号
    stopwords = {''}, #设置词云中不想要显示的词
    prefer_horizontal=0.1, #设置词云中水平显示的词的比例
    scale= 2 #生成图片与背景图片比例,默认为1
  )
cloud.generate(cut_text)  #对分词后的文本生成词云
image_colors = ImageColorGenerator(color_mask)  # 从背景图片获取颜色
plt.show(cloud.recolor(color_func=image_colors))  # 词云中词的颜色按照背景中获取的颜色
plt.imshow(cloud)            # 以图片的形式显示词云
plt.axis('off')                     # 关闭坐标轴
plt.show()                          # 展示图片
cloud.to_file('cloud.jpg')  # 图片保存

wordcloud根据文本生成词云是通过空格分隔不同的词,而中文不像英文那样本来中间就有空格,必须要通过结巴分词,然后在用空格把词全连起来。

WordCloud里面有一堆参数可以设置,需要注意的是一定要设置字体,不然出来的中文字全是框框。

这里面有很多地方涉及到背景啊颜色之类的。举例子说下:

1、
random_state=15

这个值会影响到词云中词的配色,词云中横向竖向词的比例等,大概意思就是换一个值就能生成一个新的词云图片。


random_state=11

random_state=12
2、
background_color='white'

这个是词云的背景颜色,默认是黑色。


默认值


设置其他值就能改变背景颜色。


background_color='white'
3、
color_mask = imread('background.jpg')
mask=color_mask

mask可以设置词云的形状。其实生成的图形还是方的,但是通过mask可以让词云排列出background.jpg中的图形。mask会忽略背景图片中白色的部分,词的分布都在背景图片中有颜色的部分。比如如下图片:


原型图


通过设置以上参数,可以生成这样的图片。


有形状的词云
4、
image_colors = ImageColorGenerator(color_mask) 
plt.show(cloud.recolor(color_func=image_colors))

这两行可以设置词云中词的颜色,使用背景图片中词的颜色,并且可以生成接近背景图片那样的效果。


使用背景图片颜色

小区名那些事


深圳


花园依旧是命名主力,华府、公馆、广场、国际之类的越来越多,逼格见长。

对比下北京的,


北京


北京在印象中的胡同和大院出现最多,可是都过了2010年了还在用几号院命名的小区是什么情况。

最后

上篇文章分析链家房源,因为对mongodb和highcharts都不是那么熟,花了好几天时间摸索,耗费了好多时间,结果阅读还是滑铁卢,哭晕在厕所。。



不过咱还是要屡败屡战,继续前行,毕竟哭完还得继续活着。