我有一个看起来像这样的数据帧df_things
,我想在训练之前预测分类的质量
A B C CLASS
-----------------------
al1 bal1 cal1 Ship
al1 bal1 cal1 Ship
al1 bal2 cal2 Ship
al2 bal2 cal2 Cow
al3 bal3 cal3 Car
al1 bal2 cal3 Car
al3 bal3 cal3 Car
我想按类对行进行分组,以便了解特征的分布。我这样做(例如,在 col "B"上),
df_B = df_things.groupby('CLASS').B.value_counts()
这给了我结果
CLASS B
-------------
ship bal1 2
bal2 1
cow bal2 2
car bal2 1
bal3 2
我想要的是仅可视化具有多个值的组,使其如下所示:
CLASS B
-------------
ship bal1 2
bal2 1
car bal2 1
bal3 2
我有点卡住了,所以有什么想法吗?
您可以使用
groupby
来筛选nunique
计数超过 1 的组。
v = df_things.groupby('CLASS').B.value_counts()
v[v.groupby(level=0).transform('nunique').gt(1)]
CLASS B
Car bal3 2
bal2 1
Ship bal1 2
bal2 1
Name: B, dtype: int64
来自crosstab
的解决方案
s=pd.crosstab(df.CLASS,df.B)
s[s.ne(0).sum(1)>1].replace(0,np.nan).stack()
CLASS B
Car bal2 1.0
bal3 2.0
Ship bal1 2.0
bal2 1.0
dtype: float64