Python+pyecharts在地图上呈现数据(下)

it2024-12-27  13

本文主要内容

一、分析目的及数据源简介二、数据展示1、展示流出流入数据方向2、展示流入人口总量3、使用网络图揭秘不同省份之间的关系 三、本节新知识点小结

一、分析目的及数据源简介

本案例可以直观地看出,我国人口在各省之间的流动特点,并据此了解各省之间的相关性。

本次学习使用的数据为1985至1990年(好久远呀)的人口迁移数据。数据样式如下:

其中from 为流出省份,to为流入省份,count为人口数量。

二、数据展示

1、展示流出流入数据方向

在实际研究中,我们为了观察主要特征,往往采取抓大放小的措施。在这里也是一样,对于count较小的数据,不作为我们本次的研究对象。此次查看的数据为迁移次数大于80000的记录,所以导入方式如下: 【脚本】

data = pd.read_csv(r'D:\population.csv', encoding='GBK') #将大于8万的数据转成list以备地图上展示 result = data[data['count']>80000][['from', 'to']].values.tolist() geo = Geo() geo.add_schema(maptype='china') #将result数据显示在地图上,并确定了线型为曲线 geo.add('1985~1990人口迁移图', result, type_=ChartType.LINES, linestyle_opts=opts.LineStyleOpts(curve=0.2)) #不显示标签 geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) geo.render()

【结果】

2、展示流入人口总量

【脚本】

#以流入省分组汇总流入人口量 result2 = data[['count']].groupby(data['to']).sum() result2 = result2.reset_index() result2 = result2.values.tolist() #以热点图的方式将数据载入地图 geo.add('', result2, type_=ChartType.HEATMAP) geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=1300000))

【结果】

【特别说明】 数据在按流入城市groupby后,索引即变为“to”列了,但索引是不能通过values.tolist()方式转为二维列表的,为此,需要增加一个reset_index()将索引列转为普通数值列。

3、使用网络图揭秘不同省份之间的关系

网络图有两个关键元素,一个是“节点”,一个是“边”。 其中“边”需要是字典格式,分别给出边的起点和终点,形如: [{‘source’: ‘天津’, ‘target’: ‘北京’}, {‘source’: ‘河北’, ‘target’: ‘北京’}……

“节点”也字典格式,分别给出节点的名称和大小,形如: [{‘count’: 665526, ‘name’: ‘上海’}, {‘count’: 250264, ‘name’: ‘云南’}…… 【脚本】

#整理边的格式 data = data[data['count'] > 50000] links = data[['from', 'to']].rename(columns={'from':'source', 'to':'target'}).to_dict(orient='records') #整理节点的格式 result3 = data[['count']].groupby(data['to']).sum() result3['name']= result3.index result3 = result3.rename(columns={'count':'size'}) nodes = result3.to_dict(orient='records') #画图 graph = Graph() graph.add('',nodes, links) graph.render()

【结果】

三、本节新知识点小结

本节学习了Geo()的线条设置,并学习了网络图的绘制。此外,还学习了DataFrame转为list和dict数据类型的方法。

最新回复(0)