python Numpy指向网格

2024-06-11 18:40:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个经纬度数据集,如下所示:

id,spp,lon,lat
1a,sp1,1,9
1b,sp1,3,11
1c,sp1,6,12
2a,sp2,1,9
2b,sp2,1,10
2c,sp2,3,10
2d,sp2,4,11
2e,sp2,5,12
2f,sp2,6,12
3a,sp3,4,13
3b,sp3,5,11
3c,sp3,8,8
4a,sp4,4,12
4b,sp4,6,11
4c,sp4,7,8
5a,sp5,8,8
5b,sp5,7,6
5c,sp5,8,2
6a,sp6,8,8
6b,sp6,7,5
6c,sp6,8,3

我想从这样的网格生成数据:

^{pr2}$

它使用变量“spp”作为分类(分组)因子,给出网格中每个单元格中的数据记录数。在

从这个网格,我想创建一个热图,叠加在一个地理地图上,这样我就得到了类似下图的结果。在

enter image description here

我可以看到how to plot a heatmap on a Matplotlib/Basemap,但我无法想出如何从点数据生成网格。此外,重要的是,我能够选择网格大小,以便可以评估几个不同的分辨率。我想用科学的方法来取得更大的进步。在

任何提示,想法,建议将不胜感激。在


Tags: 数据id网格分类经纬度lonlatsp3
1条回答
网友
1楼 · 发布于 2024-06-11 18:40:11

如果你愿意用熊猫,你可以这样做

dims = max(df[['lat','lon']].max())
df.groupby(['lat','lon'])['lat'].count().unstack().reindex(range(1,dims+1)).T.reindex(range(1,dims+1)).fillna(0).T

产生一个方形数据帧

^{pr2}$

始终可以使用df.values将by转换为numpy

相关问题 更多 >