Вопрос или проблема
Я пытаюсь создать простой график подсчета, показывающий количество для статистики «да-нет». Однако у меня по оси y значения находятся между 0 и 1, и график не отображает фактическое количество переменной (перемасштабирование оси не помогло). В результате количество отображается по оси x. Я просто не знаю, как исправить эту простую проблему 😀 Пожалуйста, помогите мне >.>
dict = {"Состояние": ['нет','да'], "Курение":[1561,635]}
frame=pd.DataFrame(data=dict)
frame.set_index("Состояние", inplace=True)
frame
plt.figure(figsize=(8,6))
sns.set_palette("pastel", 8)
sns.countplot(data=frame, x="Курение" )
plt.show()
Исходная структура словаря не подходила для графика подсчета. Функция countplot в Seaborn ожидает, что каждая строка будет представлять отдельное наблюдение, а не предварительно агрегированные данные.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
data = {"Курение": ["нет", "да"],
"Количество": [1561, 635]}
df = pd.DataFrame(data)
plt.figure(figsize=(8, 6))
sns.set_palette("pastel")
sns.barplot(data=df, x="Курение", y="Количество")
plt.title("Количество по статусу курения")
plt.xlabel("Статус курения")
plt.ylabel("Количество")
plt.show()
Ответ или решение
Для создания простого графика подсчета "да-нет" в Python с помощью библиотек Pandas и Seaborn, вам нужно учитывать, что функция countplot
ожидает данные в другом формате. Вместо предагрегированных данных, необходимо использовать отдельные наблюдения. Однако в вашем случае данные уже агрегированы, поэтому правильнее будет использовать barplot
.
Вот как вы можете это исправить:
- Создайте DataFrame с данными о количестве ответов "да" и "нет".
- Используйте
barplot
для визуализации количества.
Ниже приведен пример кода на Python:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Создаем данные
data = {"Smoking": ["no", "yes"],
"Count": [1561, 635]}
df = pd.DataFrame(data)
# Настраиваем размер графика
plt.figure(figsize=(8, 6))
sns.set_palette("pastel")
# Создаем барплот
sns.barplot(data=df, x="Smoking", y="Count")
# Настройка заголовка и подписей осей
plt.title("Количество людей по статусу курения")
plt.xlabel("Статус курения")
plt.ylabel("Количество")
# Отображаем график
plt.show()
В этом коде:
- Мы создаем DataFrame
df
, который содержит два столбца:Smoking
(статусы "да" и "нет") иCount
(количество). - Затем мы используем
seaborn.barplot
для создания графика, на котором по оси X отображается статус курения, а по оси Y — количество людей с этим статусом. - Не забудьте добавить заголовок и подписи к осям для лучшей наглядности графика.
Этот метод обеспечивает правильное отображение ваших данных, согласно тому, как они агрегированы. Вы получите график, который показывает количество людей, относящихся к каждому из статусов, и это более корректный способ визуализации в данной ситуации.