matplotlib 含NaN的Pandas分组和等高线图

daupos2t  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(109)

我有一个DataFrame的形式:

Lon Lat  N
0   2   1   1
1   2   2   2
2   2   3   1
3   2   2   1
4   3   2   1
5   3   2   1

其中LonLat表示坐标(位置),N表示相应位置处的计数。
现在,我想:
1.计算每个点的N之和,得到:

Lon Lat  N
0   2   1   1
1   2   2   3
2   2   3   1
3   3   2   2

1.给定一个meshgrid Lon_grid = np.arange(1,5)Lat_grid = np.arange(1,4),即一个4 * 3的矩阵,然后将数据绘制成等值线,注意没有数据的位置可以用NaN或0填充。
如果没有足够的数据来绘制等高线,最终结果可能如下所示:

Lon Lat  N
0   1   1   0
1   2   1   1
2   3   1   0
3   4   1   0
4   1   2   0
5   2   2   3
6   3   2   2
7   4   2   0
8   1   3   0
9   2   3   1
10  3   3   0
11  4   3   0

非常感谢您的帮助!

svmlkihl

svmlkihl1#

以下是提供的数据示例:

df2 = df.pivot_table(index='Lon', columns='Lat', values='N',
                     aggfunc='sum', fill_value=0)

X,Y = np.meshgrid(df2.index.to_numpy(), df2.columns.to_numpy())

plt.contourf(X, Y, df2.values.T)
plt.colorbar()
plt.show()

输出:

对于聚合数据(此处没有使用):

out = df.groupby(['Lon', 'Lat'], as_index=False).sum()

相关问题