我的dataFrame,df:
Sno | Attribute_1 | Attribute_2 | Attribute_3
__________________________________________________
1 | option_1 | option_3 |option_2
2 | option_1 | option_1 |option_1
3 | option_2 | option_2 |option_2
4 | option_1 | option_1 |option_3
5 | option_3 | option_2 |option_2
6 | option_3 | option_3 |option_1
7 | option_1 | option_3 |option_2
此处Attribute_1,Attribute_2和Attribute_3包含分类数据-每行的option_1或option_2或option_3。
我想在同一图上为所有属性创建一个计数图。
我可以通过以下方式在一列中执行此操作:
sns.countplot(x="Attribute_1", data=df);
我可以为每个属性单独创建,但是我要寻找的是在同一图上可以为所有属性创建计数图。
即X轴将具有属性,并且每个属性将具有三个计数图。
最佳答案
Seaborn通常适用于长格式数据集。 IE。而不是3列,每个属性都有不同的选项,您将有两列,一列用于选项,一列用于属性。这可以通过pd.melt
轻松创建。然后,可以在“选项”列上使用hue
值:
sns.countplot(x="variable", hue="value", data=pd.melt(df))
完整的例子:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
a= np.random.choice(["option_{}".format(i) for i in [1,2,3]], size=(12,3))
df = pd.DataFrame(a, columns=["Attribute_{}".format(i) for i in list("ABC")])
sns.countplot(x="variable", hue="value", data=pd.melt(df))
plt.show()
同样,您可以互换
x
和hue
:sns.countplot(x="value", hue="variable", data=pd.melt(df))