张春成

V2

2023/04/28阅读:19主题:默认主题

细粒度的中国地理数据分析(二)

细粒度的中国地理数据分析(二)

本文对数据进行进一步分析,通过引入另一个地理包,能够提升地图数据的观感。

另外,本文还将涉及 Pandas 和 GeoPandas 的一些细节。

本系列的开源代码可见我的 Github 仓库

https://github.com/listenzcc/China-geometry-landmark[1]


  • 细粒度的中国地理数据分析(二)[2]
    • Pandas 数据表的 Group 和 Stack[3]
    • 城市的地块比例图[4]
    • 城市的聚类分析[5]

Pandas 数据表的 Group 和 Stack

本系列的数据表如下图所示,我们关心的是用红框标示出的列,它们分别代表地块面积、城市代码、第一级和第二级的地块名称。接下来,我们将各个城市中不同地块的总面积比例进行统计,统计的方法使用 Pandas 的 Group 和 Stack 方法获得,这两种方法实现方便,语义明确,可以说十分优雅。其核心代码如下,其要点简述如下

  • 首先,对 Pandas 的数据表进行 groupby 操作可以实现多级标签,其第一级是城市,第二级是地块种类;
  • 其次,对 group 再进行 groupby(level=0).sum() 操作是保持第一级标签的前提下,对其余标签进行求和,这样可以得到该城市全部地块的总面积。有了总面积就可以方便地求得各个地块所占的比例;
  • 最后,按照 Pandas 的语义逻辑来讲,它认为多级标签是 stack 在一起的,因此使用 unstack 方法可以将它“还原”成多列的形式,最后的 .fillna(0) 操作的目的是为了防止有些城市缺乏某种地块里出现 NaN 值。
# Compute land types' ratio in every city for the euluc_table
# It uses the group and upstack method.

# Group into 2-levels index
group = euluc_table.groupby(['City_CODE''Level2'])
table = group['F_AREA'].sum()
sum_by_city = table.groupby(level=0).sum()

# Compute the ratios
for c in tqdm(sum_by_city.index, 'Compute every cities'):
 v = sum_by_city[c]
 table[c] /= v

# Convert the grouped table into matrix format
matrix_formated_dataFrame = table_level2.unstack().fillna(0)
euluc_table
euluc_table

euluc_table

Grouped table
Grouped table

Grouped table

Matrix-formated grouped table
Matrix-formated grouped table

Matrix-formated grouped table

剩下的工作就是从城市代码获取城市边界的地理信息,各个城市的边界信息从以下开源工程处取得,同时我通过合适的查询方法给它构造一个高效的查询方法,形成 GeoPandas 数据。

WaketZheng/adcode[6]

城市的地块比例图

由于我们已经获取了大量城市不同地块的比例,现将它们绘制如下,其中白色区域代表没有数据的区域。另外要提醒的是图中的颜色代表地块面积比例的相对值,而不是绝对值,因此颜色越亮代表该地区更倾向于这种功能,这一点要极其注意。

Untitled
Untitled

城市的聚类分析

接下来,我根据每个城市的地块分布,对全国有数据的城市进行聚类分析,聚类结果用彩色表示,白色依旧表示没有数据的城市。聚类结果表明,各个省份的地块倾向具有较强的地域相似性。至于这些地块倾向代表什么意义,我暂时也还没有弄清楚。

Untitled
Untitled

参考资料

[1]

https://github.com/listenzcc/China-geometry-landmark: https://github.com/listenzcc/China-geometry-landmark

[2]

细粒度的中国地理数据分析(二): #细粒度的中国地理数据分析二

[3]

Pandas 数据表的 Group 和 Stack: #pandas-数据表的-group-和-stack

[4]

城市的地块比例图: #城市的地块比例图

[5]

城市的聚类分析: #城市的聚类分析

[6]

WaketZheng/adcode: https://gitee.com/waketzheng/adcode/tree/master

分类:

后端

标签:

后端

作者介绍

张春成
V2