【问题标题】:Boxplot for different length of serial values from pandas dataframe来自熊猫数据框的不同序列值长度的箱线图
【发布时间】:2020-12-05 07:07:07
【问题描述】:

我有一个 csv 文件,如下所示:

每列具有不同长度的值。试图绘制为箱线图。

代码

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(),3)),
                'M5 ' +str(round(df.dc_class5.mean(),3)),
                'M6 ' +str(round(df.dc_class6.mean(),3)),
                'M7 ' +str(round(df.dc_class7.mean(),3)),
                'M8 ' +str(round(df.dc_class8.mean(),3)),
                'M9 ' +str(round(df.dc_class9.mean(),3)),
                'M10 ' +str(round(df.dc_class10.mean(),3)),
                'M11 ' +str(round(df.dc_class11.mean(),3)),

                ])

plt.ylim(0, 1)
plt.title('Dices des différentes classes')
plt.legend()
plt.show()

我没有得到第 5、6、7 和 8 列的图,请问问题出在哪里,还有其他方法吗?

【问题讨论】:

    标签: python pandas numpy matplotlib boxplot


    【解决方案1】:

    df.dc_class5df.dc_class6df.dc_class7df.dc_class8 中缺少数据,这仍然会阻止箱线图显示这些列。在调用plt.boxplot 时,您可以对带有NaN 的每一列使用.dropna() 方法。

    另外我认为你不小心切换了 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(),3)),
                'M5 ' +str(round(df.dc_class5.mean(),3)),
                'M6 ' +str(round(df.dc_class6.mean(),3)),
                'M7 ' +str(round(df.dc_class7.mean(),3)),
                'M8 ' +str(round(df.dc_class8.mean(),3)),
                'M9 ' +str(round(df.dc_class9.mean(),3)),
                'M10 ' +str(round(df.dc_class10.mean(),3)),
                'M11 ' +str(round(df.dc_class11.mean(),3)),
    
            ]
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-02
      • 2020-11-29
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 2019-12-13
      相关资源
      最近更新 更多