Python Сгруппированная гистограмма. Граф не работает - PullRequest
1 голос
/ 11 октября 2019

Я работаю над школьным проектом и застрял в создании сгруппированной гистограммы. Я нашел эту статью в Интернете с объяснением: https://www.pythoncharts.com/2019/03/26/grouped-bar-charts-matplotlib/ Теперь у меня есть набор данных со столбцом «Возраст» и столбцом «Пол» в столбце «Возраст», где указано, сколько лет клиенту, и в поле он равен 0 для женщины и1 для мужчины. Я хочу изобразить разницу в возрасте между мужчиной и женщиной. Теперь я попробовал следующий код, как в примере:

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
import pylab as pyl
fig, ax = plt.subplots(figsize=(12, 8))
x = np.arange(len(data.Age.unique()))
# Define bar width. We'll use this to offset the second bar.
bar_width = 0.4
# Note we add the `width` parameter now which sets the width of each bar.
b1 = ax.bar(x, data.loc[data['Sex'] == '0', 'count'], width=bar_width)
# Same thing, but offset the x by the width of the bar.
b2 = ax.bar(x + bar_width, data.loc[data['Sex'] == '1', 'count'], width=bar_width)

Это вызвало следующую ошибку: KeyError: 'count'

Затем я попытался немного изменить код и получил другойошибка:

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
import pylab as pyl
fig, ax = plt.subplots(figsize=(12, 8))
x = np.arange(len(data.Age.unique()))
# Define bar width. We'll use this to offset the second bar.
bar_width = 0.4
# Note we add the `width` parameter now which sets the width of each bar.
b1 = ax.bar(x, (data.loc[data['Sex'] == '0'].count()), width=bar_width)
# Same thing, but offset the x by the width of the bar.
b2 = ax.bar(x + bar_width, (data.loc[data['Sex'] == '1'].count()), width=bar_width)

Это вызвало ошибку: ValueError: несоответствие формы: объекты не могут быть переданы в одну формудиаграмма

1 Ответ

1 голос
/ 11 октября 2019

Кажется, что статья переживает слишком много проблем, просто для того, чтобы построить панель сгруппированных диаграмм:

np.random.seed(1)
data = pd.DataFrame({'Sex':np.random.randint(0,2,1000),
                     'Age':np.random.randint(20,50,1000)})

(data.groupby('Age')['Sex'].value_counts()        # count the Sex values for each Age
     .unstack('Sex')                              # turn Sex into columns
     .plot.bar(figsize=(12,6))                    # plot grouped bar
)

Или еще проще с seaborn:

fig, ax = plt.subplots(figsize=(12,6))
sns.countplot(data=data, x='Age', hue='Sex', ax=ax)

Вывод:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...