从 Pandas Groupby Dataframe 创建等高线图

2023-11-23

我有以下熊猫数据框:

In [66]: hdf.size()
Out[66]:
a           b
0           0.0          21004
            0.1         119903
            0.2         186579
            0.3         417349
            0.4         202723
            0.5         100906
            0.6          56386
            0.7           6080
            0.8           3596
            0.9           2391
            1.0           1963
            1.1           1730
            1.2           1663
            1.3           1614
            1.4           1309
...
186         0.2         15
            0.3          9
            0.4         21
            0.5          4
187         0.2          3
            0.3         10
            0.4         22
            0.5         10
188         0.0         11
            0.1         19
            0.2         20
            0.3         13
            0.4          7
            0.5          5
            0.6          1
Length: 4572, dtype: int64

您会看到,a 从 0...188 开始,每个组中的 b 从某个值到某个值。并且作为指定的Z值,a/b对出现的次数。

如何从分组数据框中获取等值线或热图?

我有这个(要求?):

numcols, numrows = 30, 30
xi = np.linspace(0, 200, numcols)
yi = np.linspace(0, 6, numrows)
xi, yi = np.meshgrid(xi, yi)
zi = griddata(?, ?, hdf.size().values, xi, yi)

如何从 Groupby 对象中获取 x 和 y 值并绘制轮廓?


多谢!我的错是,我没有意识到,我必须对 groupby 数据框应用一些函数,比如.size(),与它一起工作...

hdf = aggdf.groupby(['a','b']).size()
hdf

gives me

a           b
1           -2.0          1
            -1.9          1
            -1.8          1
            -1.7          2
            -1.6          5
            -1.5         10
            -1.4          9
            -1.3         21
            -1.2         34
            -1.1         67
            -1.0         65
            -0.9         94
            -0.8        180
            -0.7        242
            -0.6        239
...
187          0.4        22
             0.5        10
188         -0.6         2
            -0.5         2
            -0.4         1
            -0.3         2
            -0.2         5
            -0.1        10
            -0.0        18
             0.1        19
             0.2        20
             0.3        13
             0.4         7
             0.5         5
             0.6         1
Length: 8844, dtype: int64

有了这个,在你的帮助下,CT Zhu,我就可以做到

hdfreset = hdf.reset_index()
hdfreset.columns = ['a', 'b', 'occurrence']
hdfpivot=hdfreset.pivot('a', 'b')

这最终给了我正确的价值观

X=hdfpivot.columns.levels[1].values
Y=hdfpivot.index.values
Z=hdfpivot.values
Xi,Yi = np.meshgrid(X, Y)
plt.contourf(Yi, Xi, Z, alpha=0.7, cmap=plt.cm.jet);

这导致了这个美丽的轮廓:

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Pandas Groupby Dataframe 创建等高线图 的相关文章

随机推荐