Bal*_*r82 9 python group-by matplotlib contour pandas
我关注了Pandas Dataframe:
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
Run Code Online (Sandbox Code Playgroud)
你看,从0到188和每个组中的b从某个值到某个值.并且作为指定的Z值,对a/b的出现次数.
如何从分组数据框中获取countour或heatmap图?
我有这个(要求?):
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)
Run Code Online (Sandbox Code Playgroud)
如何从Groupby对象中获取x和y值并绘制轮廓?
Bal*_*r82 16
非常感谢!我的错,我没有意识到,我必须将一些函数应用于groupby数据帧,比如.size()
,使用它...
hdf = aggdf.groupby(['a','b']).size()
hdf
Run Code Online (Sandbox Code Playgroud)
给我
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
Run Code Online (Sandbox Code Playgroud)
有了这个,还有你的帮助CT朱,我可以做
hdfreset = hdf.reset_index()
hdfreset.columns = ['a', 'b', 'occurrence']
hdfpivot=hdfreset.pivot('a', 'b')
Run Code Online (Sandbox Code Playgroud)
这终于给了我正确的价值观
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);
Run Code Online (Sandbox Code Playgroud)
这导致了这个美丽的轮廓:
欢迎来到 SO。
很明显,对于每个“a”级别,“b”级别的数量都不相同,因此我将建议以下解决方案:
In [44]:
print df #an example, you can get your dataframe in to this by rest_index()
a b value
0 0 1 0.336885
1 0 2 0.276750
2 0 3 0.796488
3 1 1 0.156050
4 1 2 0.401942
5 1 3 0.252651
6 2 1 0.861911
7 2 2 0.914803
8 2 3 0.869331
9 3 1 0.284757
10 3 2 0.488330
[11 rows x 3 columns]
In [45]:
#notice that you will have some 'NAN' values
df=df.pivot('a', 'b', 'value')
In [46]:
X=df.columns.values
Y=df.index.values
Z=df.values
x,y=np.meshgrid(X, Y)
plt.contourf(x, y, Z) #the NAN will be plotted as white spaces
Out[46]:
<matplotlib.contour.QuadContourSet instance at 0x1081385a8>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9527 次 |
最近记录: |