问题描述
我必须基于二进制变量从数据帧绘制两个散布图:
df_train \
.groupby("Binary")["Continuous"] \
.apply(sb.distplot,hist=False)
plt.show()
如果我在apply中传递参数 label = ,则相同的标签将应用于两个图。我该如何告诉他根据二进制特征的值显示标签?
解决方法
代替使用apply
,您可以遍历创建的组。 (代替没有直方图的distplot
,可以直接调用kdeplot
,这使得提供其他参数更加容易。)
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
df_train = pd.DataFrame({"Binary": np.repeat(['yes','no'],1000),"Continuous": np.random.uniform(-1,1,2000).cumsum()})
groups = df_train.groupby("Binary")["Continuous"]
for label,group in groups:
sns.kdeplot(group,label=f"Binary: {label}",shade=True)
plt.show()