如何制作具有多列的多个标签的计数图
How can I make countplot of multiple label with multiple column
给出如下数据
test = pd.DataFrame(np.array([
["Yes", "No", "No", "Yes", "Maybe"],
["Yes", "Yes", "Yes", "Maybe", "Maybe"],
["Maybe", "Yes", "Yes", "No", "No"],
["No", "Yes", "Maybe", "No", "No"],
["Maybe", "Maybe", "Maybe", "No", "Yes"],
])
,columns=['a','b','c','d', 'e'])
我想要如下图所示的东西。
因此,第 a
列的条形图包含三个条形,每个条形表示 2 个“是”、1 个“否”、2 个“可能”。剩余的列也是如此。
我尝试制作新数据框 temp = df.apply(pd.Series.value_counts)
并使用 sns.countplot()
但结果只有 5 条而不是 3*5 条。
请帮我制作具有多列多标签的条形图。
感谢阅读。
使用melt
:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
data = {'a': ['Yes', 'Yes', 'Maybe', 'No', 'Maybe'],
'b': ['No', 'Yes', 'Yes', 'Yes', 'Maybe'],
'c': ['No', 'Yes', 'Yes', 'Maybe', 'Maybe'],
'd': ['Yes', 'Maybe', 'No', 'No', 'No'],
'e': ['Maybe', 'Maybe', 'No', 'No', 'Yes']}
df = pd.DataFrame(data)
df1 = df.melt(var_name='Additional service', value_name='Has service')
sns.countplot(x='Additional service', hue='Has service', data=df1)
plt.show()
给出如下数据
test = pd.DataFrame(np.array([
["Yes", "No", "No", "Yes", "Maybe"],
["Yes", "Yes", "Yes", "Maybe", "Maybe"],
["Maybe", "Yes", "Yes", "No", "No"],
["No", "Yes", "Maybe", "No", "No"],
["Maybe", "Maybe", "Maybe", "No", "Yes"],
])
,columns=['a','b','c','d', 'e'])
我想要如下图所示的东西。
因此,第 a
列的条形图包含三个条形,每个条形表示 2 个“是”、1 个“否”、2 个“可能”。剩余的列也是如此。
我尝试制作新数据框 temp = df.apply(pd.Series.value_counts)
并使用 sns.countplot()
但结果只有 5 条而不是 3*5 条。
请帮我制作具有多列多标签的条形图。
感谢阅读。
使用melt
:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
data = {'a': ['Yes', 'Yes', 'Maybe', 'No', 'Maybe'],
'b': ['No', 'Yes', 'Yes', 'Yes', 'Maybe'],
'c': ['No', 'Yes', 'Yes', 'Maybe', 'Maybe'],
'd': ['Yes', 'Maybe', 'No', 'No', 'No'],
'e': ['Maybe', 'Maybe', 'No', 'No', 'Yes']}
df = pd.DataFrame(data)
df1 = df.melt(var_name='Additional service', value_name='Has service')
sns.countplot(x='Additional service', hue='Has service', data=df1)
plt.show()