浏览量:3907 最近编辑于:2022-06-15 19:31:20
#数据清洗
接上篇,我们已经拿到了各区二手房成交信息excel,下图所示为其中一个区的房源详细信息
![](/files/album/20200210-1.png)
每个房源包含名称、成交日期、成交价格、每平米单价、户型、建筑面积等信息。其中不乏有不满足要求的数据,如“浏览”一栏含有“暂无数据”字段,“供暖方式”有些为空等,这些非数值型数据不方便进行统计,后面的脚本会对其进行归一化处理。
#数据统计
有了excel数据之后,便要分析各数据之间的关联。最终的目的是将这些内在的关联通过可视化图表展示出来。我简单选取了几个属性:日期、成交价格、小区、建筑面积、每平米单价,作为统计的材料。将这几个热点属性组合、关联,得到了大约6个统计栏目。1.各区二手房成交数、2.全市各月二手房成交数 3.全市二手房价格区间 4.2017-2019年各区二手房每平米单价均值走势 5.全市二手房面积区间 6.全市最受欢迎的小区。统计的数据最后是需要提供给图表用于显示的,因此选择json作为数据接口,当然txt或csv文件也行,只是处理稍复杂一些,因为要先转化为程序能识别的内置数据结构。下面简单拿“建筑面积”一栏作例子。
![](/files/album/20200210-2.png)
代码中,files是各区房源信息的excel文件,通过for循环遍历每一个excel文件,通过pandas的`read_excel()`函数读取每一个excel,返回的df对象为DataFram类型。接着选取“建筑面积”数据列并通过`tolist()`方法转为python的列表类型。area列表中的每一项对应一个房源的建筑面积字符串。然后划分0-30平米,30-50平米,……>150平米等若干个面积区间,构造area_dic{区间:数量}字典用于统计每个区间的房源数量。遍历area列表,找到各房面积对应的区间,并使area_dic[区间]的值加一。统计完毕后area_dic就转为json格式输出到json文件。
#数据展示
图标展示部分我选取了大名鼎鼎的**pyecharts**开源框架用于图表,它与python完美结合,方便集成到WEB框架中。新版pyecharts支持链式调用,开发非常方便。
```python
bar=Bar()
bar.add_xaxis(month_lis)
bar.add_yaxis('成交数',month_num_lis)
bar.set_global_opts(title_opts=opts.TitleOpts(title="南京市各月二手房成交数",subtitle="包含10个主城区,数据从2012年开始"),
toolbox_opts=opts.ToolboxOpts(),xaxis_opts=opts.AxisOpts(name="月份"))
```
简单的柱状图生成代码,先添加横坐标,形参为python数组,纵坐标同理,接着配置全局配置,pyecharts遵循“万物皆配置”的思想。与WEB框架的集成有静态生成html文件和前后端分离两种方法,这里选择了前后端分离,生成的柱状图调用`bar.dump_options_with_quotes()`函数生成json返回给前端页面即可。注:前端模板需引用相应的echarts的js文件,如:**echarts.min.js**。更多图表展示请移步 ----》 [传送门](http://www.ivana.work/echarts)