pandas 数据帧中不同长度序列值的箱线图
Boxplot for different length of serial values from pandas dataframe
我有一个如下所示的 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 列的图表,请问问题出在哪里,还有其他方法吗?
df.dc_class5
、df.dc_class6
、df.dc_class7
、df.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)),
]
)
我有一个如下所示的 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 列的图表,请问问题出在哪里,还有其他方法吗?
df.dc_class5
、df.dc_class6
、df.dc_class7
、df.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)),
]
)