如何为分类属性创建概率分布图?

时间:2018-06-24 12:53:49

标签: python pandas matplotlib seaborn

如何为分类属性创建概率分布图?

我尝试使用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

1 个答案:

答案 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()