Python 使用具有NaN的组,按颜色散点绘制不同的组
我有一个熊猫数据框:Python 使用具有NaN的组,按颜色散点绘制不同的组,python,matplotlib,Python,Matplotlib,我有一个熊猫数据框: d1_a d2_a d3_a group BI59 NaN 0.023333 NaN 2 BI71 NaN 0.173333 NaN 2 BI52 NaN NaN NaN 1 BI44 0.450000
d1_a d2_a d3_a group
BI59 NaN 0.023333 NaN 2
BI71 NaN 0.173333 NaN 2
BI52 NaN NaN NaN 1
BI44 0.450000 NaN NaN 1
BI36 NaN 0.286667 NaN 2
BI29 NaN 0.030000 NaN 2
BI50 NaN 0.633333 NaN 2
BI63 NaN 0.110000 NaN 2
BI64 NaN 0.320000 NaN 2
BI65 0.206667 NaN NaN 1
BI67 NaN 0.216667 NaN 2
BI68 NaN 0.473333 NaN 2
BI71 NaN 0.053333 NaN 2
BI72 NaN 0.006667 NaN 2
BI75 NaN 0.430000 NaN 2
BI76 NaN 0.260000 NaN 2
BI78 NaN 0.250000 NaN 2
BI81 NaN 0.006667 NaN 2
BI83 NaN 0.603333 NaN 2
BI84 NaN NaN 0.196667 3
BI86 NaN NaN 0.046667 3
BI89 NaN 0.110000 NaN 2
BI91 NaN NaN 0.213333 3
BI93 NaN 0.443333 NaN 2
BI97 0.586667 NaN NaN 1
BI98 0.380000 NaN NaN 1
BI99 0.016667 NaN NaN 1
BI11 NaN 0.206667 NaN 2
BI12 NaN 0.500000 NaN 2
BI17 0.626667 NaN NaN 1
BI##
是索引列,行所属的组由组列表示。所以d1_a是第1组,d2_a是第2组,d3_a是第3组。此外,索引列上的数字将是x轴。如何创建散点图,每组用不同的颜色表示?当我尝试绘图时,我得到的是空绘图
如果我尝试类似于subset\u d1\u a=df['d1\u a'].dropna()
的方法,并对每个组执行类似的操作,那么我可以删除NAN,但现在数组的长度不同,我无法将它们全部绘制在同一个图形上
我最好在seaborn中这样做,但python中的任何方法都可以
到目前为止,这就是我正在做的,现在确定我是否走上了正确的道路:
subset = pd.concat([df.d1_a, df.d2_a, df.d3_a], axis=1)
subset = subset.sum(axis=1)
subset = pd.concat([subset,df.group], axis=1)
subset = subset.dropna()
g = subset.groupby('groups')
鉴于您的数据,不清楚散点图会是什么样子,但您可以这样做:
colors = {1: 'red', 2: 'green', 3: 'blue'}
df.iloc[:, :3].sum(axis=1).plot(kind='bar', colors=df.group.map(colors).tolist()
在所需散点图中,x轴上的值是多少?我假设y轴上的值为
d1_a
、d2_a
和d3_a
。是不是BI##
字符串中的#
呢?这就是你想要的吗?如果没有,请解释遗漏或错误。需要添加与组相对应的图例吗<代码>df.iloc[:,:3].sum(axis=1).绘图(kind='bar',colors=df.group.map(colors.tolist(),legend=df.group.map(colors.tolist())?