Построить график парных сравнений

average_data = {'female': [16.54,
            505.47,
            402.13,
            187.35,
            194.56,
            225.44,
            21.38,
            233.63,
            113.02,
            61.01,
            1.33,
            109.41,
            591.77],
 'male': [16.05,
          405.95,
          278.87,
          161.07,
          136.48,
          144.68,
          20.41,
          169.5,
          85.59,
          38.86,
          1.13,
          78.06,
          454.2]}
columns = ['Средний размер предложения', 'Существительные', 'Глаголы', 'Прилагательные', 'Наречия', 'Местоимения', 'Числительные', 'Предлоги', 'Сочинительные союзы', 'Подчинительные союзы', 'Междометия', 'Частицы', 'Знаки препинания']
import pandas as pd
import seaborn as sns
df = pd.DataFrame.from_dict(average_data, orient='index', columns=columns)
df.head()
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
male_bars = df.values[0] 
female_bars = df.values[1]
df.head()
sns.histplot(data=df, y=columns, multiple='dodge', shrink=.8)

Есть ДатаФрейм с двуми столбцами. Как нарисовать график со сравнением значений из каждого столбца


Ответы (3 шт):

Автор решения: Kirill Kondratenko

Сначала следует преобразить фрейм данных в удобный для составления графика формат (для этого я вывожу пол в отдельную колонку с помощью reset_index() и группирую все остальные колонки по полу с помощью melt) и дальше для сравнения лучше всего подойдет горизонтальный barplot:

df_graph = df.reset_index().melt(id_vars=['index'])
sns.barplot(df_graph, x="value", y ='variable', hue='index')

введите сюда описание изображения

→ Ссылка
Автор решения: CrazyElf

Как вариант, с минимумом телодвижений:

df.T.plot(kind='bar')

введите сюда описание изображения

P.S. Надписи на картинке полные, сохранилось что-то криво.

→ Ссылка
Автор решения: strawdog

Вам нужна столбчатая диаграмма, а не гистограмма, которую вы пытаетесь создать в своем коде. и всего две строки кода:

df = pd.DataFrame(average_data, index = columns)
df.plot(kind="barh")

введите сюда описание изображения

→ Ссылка