我想以箱线图的形式描述在数据集中发现的变量的值。数据集如下所示:
https://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+(original)
到目前为止,我的代码如下:
import pandas as pd
import numpy as np
from sklearn.impute import SimpleImputer
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import preprocessing
df=pd.read_csv(file,names=['id', 'clump_thickness','unif_cell_size',
'unif_cell_shape', 'marg_adhesion', 'single_epith_cell_size',
'bare_nuclei', 'bland_chromatin', 'normal_nucleoli','mitoses','Class'])
#boxplot
plt.figure(figsize=(15,10))
names=list(df.columns)
names=names[:-1]
min_max_scaler=preprocessing.MinMaxScaler()
X = df.drop(["Class"],axis=1)
columnsN=list(X.columns)
x_scaled=min_max_scaler.fit_transform(X) #normalization
X[columnsN]=x_scaled
y = df['Class']
sns.set_context('notebook', font_scale=1.5)
sns.boxplot(x=X['unif_cell_size'],y=y,data=df.iloc[:, :-1],orient="h")
我的箱线图返回下图:
但我想用下图显示我的信息:
我知道这是一个不同的数据集,但我可以看到,他们已经显示了诊断,在同一时间,为每个特征及其值。我试过用不同的方法来做,但我做不到。你知道吗
我尝试了以下方法:
data_st = pd.concat([y,X],axis=1)
data_st = pd.melt(data_st,id_vars=columnsN,
var_name="X",
value_name='value')
sns.boxplot(x='value', y="X", data=data_st,hue=y,palette='Set1')
plt.legend(loc='best')
但仍然没有结果。有什么帮助吗?你知道吗
谢谢
用
pandas.DataFrame.melt
重塑数据:print(df_scaled_melted.groupby(['Class', 'Attributes', 'Values'])['Values'].count().unstack())
在melt
之后,了解计数MinMaxScaler
已被使用,但在本例中没有必要,因为所有数据值都非常接近。如果在不缩放的情况下绘制数据,则除了y轴范围为1-10之外,绘图的外观将相同。无缩放:
相关问题 更多 >
编程相关推荐