Quick BI的气泡地图功能能非常直观得体现全国各区域的数据情况。这里从网上搜了一份某社交网站的用户数据,数据量就五六万条,而且只包含这些用户的公开信息(省的自己还要去爬)。
数据预处理
数据包含的字段为uid、location、gender、followersnum、friendsnum,分别是用户id、所在区域、性别、关注人数、好友人数。里面的location这个字段是中文的,看到为“浙江”这样的就写了省的,也有是“浙江 杭州”这样到省、市的,而且中间用空格分割。另外还有一些写的是“海外”或“其他”。
先用个SQL对数据进行处理,整理出一个所在省的字段
create table wbuser2 AS
select b.*
from(
select a.uid, a.`location`, a.`gender`, a.`followersnum`, a.`friendsnum`, a.`location` as province_name
from `wbuser` a
where instr(a.location, ' ')= 0
union all
select a.uid, a.`location`, a.`gender`, a.`followersnum`, a.`friendsnum`, substr(a.location, 1, instr(a.location, ' ')) as province_name
from `wbuser` a
where instr(a.location, ' ')> 0) b
工作表
数据处理好了后,我们配置数据源,并根据这张表创建一张工作表,刚生成的工作表如图:
然后我们需要对数据进行一些设置:
- 设置地理位置维度
- 修改计量的统计方式。我们不需要计算整个省的所有用户的总的好友数,也是想要平均值。关注也一样
- uid我们使用count(uid)来获得每个地区的用户量分布。转化后因为uid是字符串类型,所以默认是count
- 对于省是“其他”和“海外”的,我们不统计
- 最后查询数据并保存。
仪表盘
最后我们创建一个仪表盘,格式为气泡地图,数据来自工作表
本来所有的工作都已经完成了,但是看一下followersnum,发现台湾的数据怎么特别大,导致其他地区全是蓝点了。
于是我们查一下数据,看看是怎么样的
select a.`province_name`,
avg(a.`followersnum`) as followersnum
from `wbuser2` a
group by a.`province_name`
order by followersnum desc;
看到台湾的数据特别大,除了台湾外,香港和北京也比较大。
所以我们修改了图标的值域
最后结果如下
通过数据可视化,我们能更容易地发现数据中的一些异常和规律(比如台湾的followersnum特别大)至此大功告成!