#python #pandas #numpy #matplotlib #boxplot
#python #pandas #numpy #matplotlib #boxplot
Вопрос:
У меня есть CSV-файл, подобный приведенному ниже :
С разной длиной значений для каждого столбца. Пытаюсь отобразить как boxplot.
код:
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, idk, в чем проблема, есть ли какой-либо другой способ сделать это?
Ответ №1:
Есть недостающие данные в 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(),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)),
]
)