Как я могу сделать график подсчета нескольких меток с несколькими столбцами

#pandas #matplotlib #seaborn #data-visualization

Вопрос:

Приведенные данные, такие как ниже

 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 бар.

Пожалуйста, помогите мне создать гистограмму с несколькими метками из нескольких столбцов.

Спасибо, что прочитали.

Ответ №1:

Воспользуйся 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()
 

melt_countplot

Комментарии:

1. Поэтому мне не нужно было использовать подсчет значений, так как сам график подсчета суммирует это для меня… Какой же я глупый… Спасибо!!!