如何解决来自熊猫数据帧的不同长度序列值的箱线图
每列的值具有不同的长度。试图将其绘制为箱线图。
代码:
import pandas as pd
data = pd.DataFrame()
df = pd.read_csv('/content/filename.csv',sep=';')
plt.figure(figsize=(12,8))
plt.plot()
plt.boxplot([df.dc_class0,df.dc_class1,df.dc_class3,df.dc_class2,df.dc_class4,df.dc_class5,df.dc_class6,df.dc_class7,df.dc_class8,df.dc_class9,df.dc_class10,df.dc_class11],labels=['M0 '+str(round(df.dc_class0.mean(),1)),'M1 '+str(round(df.dc_class1.mean(),2)),'M2 '+str(round(df.dc_class2.mean(),3)),'M3 '+str(round(df.dc_class3.mean(),4)),'M4 ' +str(round(df.dc_class4.mean(),'M5 ' +str(round(df.dc_class5.mean(),'M6 ' +str(round(df.dc_class6.mean(),'M7 ' +str(round(df.dc_class7.mean(),'M8 ' +str(round(df.dc_class8.mean(),'M9 ' +str(round(df.dc_class9.mean(),'M10 ' +str(round(df.dc_class10.mean(),'M11 ' +str(round(df.dc_class11.mean(),])
plt.ylim(0,1)
plt.title('Dices des différentes classes')
plt.legend()
plt.show()
我没有得到第5、6、7和8列的图,这是问题所在,还有其他方法可以做到吗?
解决方法
df.dc_class5
,df.dc_class6
,df.dc_class7
,df.dc_class8
中缺少数据,这些数据仍然阻止箱形图显示在这些列中。调用.dropna()
时,可以对NaN
的每一列使用plt.boxplot
方法。
我还认为您不小心切换了df.dc_class2和df.dc_class3。
plt.boxplot([
df.dc_class0,df.dc_class1,df.dc_class2,df.dc_class3,df.dc_class4,df.dc_class5.dropna(),df.dc_class6.dropna(),df.dc_class7.dropna(),df.dc_class8.dropna(),df.dc_class9,df.dc_class10,df.dc_class11
],labels=[
'M0 '+str(round(df.dc_class0.mean(),1)),'M1 '+str(round(df.dc_class1.mean(),2)),'M2 '+str(round(df.dc_class2.mean(),3)),'M3 '+str(round(df.dc_class3.mean(),4)),'M4 ' +str(round(df.dc_class4.mean(),'M5 ' +str(round(df.dc_class5.mean(),'M6 ' +str(round(df.dc_class6.mean(),'M7 ' +str(round(df.dc_class7.mean(),'M8 ' +str(round(df.dc_class8.mean(),'M9 ' +str(round(df.dc_class9.mean(),'M10 ' +str(round(df.dc_class10.mean(),'M11 ' +str(round(df.dc_class11.mean(),]
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。