2017-09-14 25 views
0

我的數據幀,DF:Matplotlib:劇情countplot爲兩個或兩個以上的列單情節

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軸將具有屬性,並且每個屬性將具有三個計數圖。

回答

1

Seaborn通常對長表格數據集的效果最好。即而不是每個屬性具有不同選項的3列,您將有兩列,一列用於選項,一列用於屬性。這可以通過pd.melt輕鬆創建。

sns.countplot(x="variable", hue="value", data=pd.melt(df)) 

完整的例子:那麼hue值可以在 「選項」 一欄使用

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

enter image description here

同樣可以互換xhue

sns.countplot(x="value", hue="variable", data=pd.melt(df)) 

enter image description here

+0

非常感謝。有幫助。 –