Python 为划分为多个存储箱的数据绘制一个方框和胡须图
我有一个包含两列(f1和f2)的数据框。您可以使用以下方法创建示例数据帧:Python 为划分为多个存储箱的数据绘制一个方框和胡须图,python,matplotlib,plot,seaborn,boxplot,Python,Matplotlib,Plot,Seaborn,Boxplot,我有一个包含两列(f1和f2)的数据框。您可以使用以下方法创建示例数据帧: # intialise data of lists. data = {'f1':[20,183,19,45,9173,11,482], 'f2':[771,8773,91,837,917,891,11]} # Create DataFrame d = pd.DataFrame(data) # Print the output. d 我使用以下代码将数据帧划分为20个存储箱:
# intialise data of lists.
data = {'f1':[20,183,19,45,9173,11,482],
'f2':[771,8773,91,837,917,891,11]}
# Create DataFrame
d = pd.DataFrame(data)
# Print the output.
d
我使用以下代码将数据帧划分为20个存储箱:
d['feature2'].value_counts(bins=20, sort=False)
然而,上面提到的代码行给出了每个箱子中的计数。我想将数据框拆分为20个存储箱,然后为这两个功能的每个存储箱绘制框和胡须图
我知道hexbin,hist2d有一个参数nbins:
fig, axes = plt.subplots(ncols=2, nrows=1, figsize=(21, 5))
nbins = 40
axes[0].set_title('Hexbin')
axes[0].hexbin(d.f1, d.f2, gridsize=nbins, cmap=plt.cm.BuGn_r)
# 2D Histogram
axes[1].set_title('2D Histogram')
axes[1].hist2d(d.f1, d.f2, bins=nbins, cmap=plt.cm.BuGn_r)
但它不存在于箱线图中。因此,我想将我的数据帧划分为20个存储箱,对于每个存储箱,我想为两列绘制box和whisker图。我怎样才能做到这一点。如有见解,将不胜感激
编辑:
我们有点不清楚到底想要什么 这里有一个使用Seaborn的方法。首先将数据帧转换为“长”形式,然后为值创建20个箱子,最后为每个特征创建箱线图:
从matplotlib导入pyplot作为plt
作为pd进口熊猫
将numpy作为np导入
导入seaborn作为sns
d=pd.DataFrame({'f1':np.random.rand(100100).cumsum(axis=0).ravel(),
'f2':np.random.rand(100100).cumsum(axis=0.ravel()})
dlong=d.melt(变量名称='feature',值名称='value')
dlong['bin']=局部切割(dlong['value'],20)
图,ax=plt.子批次(图尺寸=(20,5))
箱线图(数据=dlong,x='bins',y='value',色调='feature',ax=ax)
最大刻度参数(轴=x',旋转=90)
plt.紧_布局()
plt.show()
以下是使用相同的存储箱创建两个子地块的方法:
d=pd.DataFrame({'f1':np.random.rand(100100).cumsum(axis=0).ravel(),
'f2':np.random.rand(100100).cumsum(axis=0.ravel()})
dlong=d.melt(变量名称='feature',值名称='value')
dlong['bin']=局部切割(dlong['value'],10)
图(ax1,ax2)=plt.子批次(nrows=2,figsize=(12,10))
sns.boxplot(数据=dlong[dlong['feature']=='f1'],x='bin',y='value',ax=ax1)
sns.boxplot(数据=dlong[dlong['feature']=='f2'],x='bin',y='value',ax=ax2)
ax1.设置标题('feature=f1')
ax2.设置标题('feature=f2')
功能2
在您的数据框架中不作为列存在这正是我想要做的。谢谢只是我的f1在f2以下。我怎样才能让他们分开。我做10个箱子。我也放了这个图像。是的,我试过了。但是f1和f2的箱子变得不同,因此这两个图形不可比较。您可以使用固定箱子,例如bins=np.arange(min,max,step)
和d['bins\u f1']=pd.cut(d['f1'],bins=bins)
。固定垃圾箱还有一个额外的好处,垃圾箱的边缘是更好的数字。这正是我所需要的。谢谢,我刚刚做了。谢谢:)