如何为分类属性创建概率分布图?
我尝试使用sns.distplot
,但收到错误消息:TypeError: unsupported operand type(s) for /: 'str' and 'int'
。
但是当我运行sns.countplot(x="WAKE", data=df, palette="Greens_d")
时,我得到了正确的计数图。
df =
ID WAKE
1 H
2 H
3 L
4 H
5 M
6 M
7 H
8 L
答案 0 :(得分:1)
严格来说不是Seaborn,但我希望基本的Matplotlib可以。
您可以将类别简化为数字并绘制直方图。然后可以将此直方图用作密度直方图以对其进行归一化。我敦促您在此处阅读每个功能的文档。
df = pd.DataFrame()
df['Wake'] = ['H', 'H', 'L', 'H', 'M', 'M', 'H', 'L']
# Reduce categories to numbers
vals = df['Wake'].values
uniq, idx = np.unique(vals, return_inverse=True)
# View results as groups (just for show)
df['C'] = idx
df.groupby('Wake').count()
# Substract 0.5 to center to the indices
i = idx - 0.5
plt.hist(i, bins=np.arange(0, idx.max()+2, 1)-0.5, density=True)
plt.show()